0
Lotus Notes에서 iCalendar 및 Java Mail API를 사용하여 회의 초대를 보내려고합니다. 메일 내용에 첨부 파일이 들어오지 않는다는 사실 외, 심지어 열어. 내 코드를 확인한 결과 코드 끝에 포함 된 첨부 파일이 없음을 확인할 수 있습니다. 누군가 왜 이런 일이 일어 났는지 설명 할 수 있습니까? 다음은첨부 파일 로터스 메모에 모임 초대 보내기 중입니다.
public void postMail(String meetingId, List<String> ToList,
List<String> existingAttendeeList, String subject, String message,
Date startDate, Date endDate, String from, boolean isMeetingInvite)
throws UtilException {
String[] recipients = null;
if ((ToList == null || ToList.size() == 0)) {
log.error("Both recipients and recipientCC are null");
throw new UtilException("Both recipients and recipientCC are null");
} else {
recipients = new String[ToList.size()];
recipients = (String[]) ToList.toArray(recipients);
}
boolean debug = false;
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "false");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(debug);
MimeMessage mimeMessage = new MimeMessage(session);
InternetAddress addressFrom = new InternetAddress(from);
mimeMessage.setFrom(addressFrom);
if (!(recipients == null)) {
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]);
}
mimeMessage.setRecipients(Message.RecipientType.TO, addressTo);
}
Multipart multipart = new MimeMultipart();
MimeBodyPart iCalAttachment = new MimeBodyPart();
TimeZone tz = TimeZone.getDefault();
byte[] invite = createICalInvitation(meetingId, subject, message,
startDate, endDate, tz, from, isMeetingInvite,
existingAttendeeList);
iCalAttachment.setDataHandler(new DataHandler(
new ByteArrayDataSource(new ByteArrayInputStream(invite),
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
multipart.addBodyPart(iCalAttachment);
mimeMessage.setContent(multipart);
Transport.send(mimeMessage);
} throw new UtilException(e.toString());
}
}
private byte[] createICalInvitation(String _meetingID, String _subject,
String _content, Date _start, Date _end, TimeZone _tz,
String mailToAddress, boolean isMeetingInvite,
List<String> existingAttendeeList) throws Exception {
CompatibilityHints.setHintEnabled(
CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY, true);
DateTime start = new DateTime(_start);
DateTime end = new DateTime(_end);
VEvent vEvent = new VEvent(start, end, _subject);
vEvent.getProperties().add(new Uid(_meetingID));
vEvent.getProperties().add(new Description(_content));
vEvent.getProperties().add(new XProperty("X-LOTUS-BROADCAST", "false"));
Attendee dev = new Attendee(URI.create("mailto:" + mailToAddress));
vEvent.getProperties().add(dev);
Organizer organizer = new Organizer(URI.create(mailToAddress));
vEvent.getProperties().add(organizer);
if (existingAttendeeList != null && existingAttendeeList.size() != 0) {
for (String index : existingAttendeeList) {
Attendee existingAttendee = new Attendee(index);
vEvent.getProperties().add(existingAttendee);
}
}
net.fortuna.ical4j.model.Calendar cal = new net.fortuna.ical4j.model.Calendar();
cal.getProperties()
.add(new ProdId(
"//Lotus Development Corporation//NONSGML Notes 8.5.2//EN_C"));
cal.getProperties().add(
net.fortuna.ical4j.model.property.Version.VERSION_2_0);
cal.getProperties().add(CalScale.GREGORIAN);
if (isMeetingInvite) {
cal.getProperties().add(
net.fortuna.ical4j.model.property.Method.REQUEST);
} else {
cal.getProperties().add(
net.fortuna.ical4j.model.property.Method.CANCEL);
}
TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance()
.createRegistry();
VTimeZone tz = registry.getTimeZone(_tz.getID()).getVTimeZone();
cal.getComponents().add(tz);
cal.getComponents().add(vEvent);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
CalendarOutputter outputter = new CalendarOutputter();
outputter.output(cal, bout);
return bout.toByteArray();
}
있는이 코드를 실행하고있는 주요 방법입니다 :
public static void main(String[] args) {
List a = new ArrayList();
a.add("[email protected]");
Calendar c = Calendar.getInstance();
c.roll(Calendar.DATE, 5);
Date d1 = c.getTime();
c.add(Calendar.HOUR, 1);
Date d2 = c.getTime();
SendMail s = new SendMail();
String id = "" + System.currentTimeMillis();
try {
s.postMail("212", a, null, "Hel22lo", "hel22lo", d1, d2,
"[email protected]", true);
}
그래,하지만 웹에서 icalendar 첨부 파일을 첨부하기 위해 (Lotus Notes와 호환되도록) 멀티 파트 유형을 보내야합니다. 누락 된 것이 있습니까? – Tushar
본문 텍스트 부분 adn을 추가 한 다음 icalendar 첨부 파일이 제대로 처리되는지 확인하십시오. –