0

我正在尝试发送 iCal 邀请,但当我通过 Exchange 服务器发送邀请时,无法使其在 Outlook 中显示为事件。如果我使用外部 IMAP 服务器一切正常,这似乎是 Exchange 的问题(可能是某些配置)

这是事件,没什么特别的(我省略了信息)

BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20131205T154852Z
UID:20131205T154852Z-1
SUMMARY:I
X-ALT-DESC;FMTTYPE=text/html:
DTSTART:20131206T090000
DTEND:20131206T180000
ORGANIZER:mailto:
ATTENDEE;ROLE=REQ-PARTICIPANT;
END:VEVENT
END:VCALENDAR

也许我应该放置一些额外的标题来强制 Outlook 将其视为一个事件。

我通过 SMTP 内部服务器使用此 Java 代码发送它。

    final MimeMessage message = getMimeMessage(mailSession, template);
    Multipart multipart = new MimeMultipart();
    message.setContent(multipart);
    Transport.send(message);

和这个库(ical4j)

    MimeBodyPart iCalEvent = new MimeBodyPart();
    iCalEvent.addHeader("Content-Class", "urn:content-classes:calendarmessage");
    net.fortuna.ical4j.model.Calendar calendar = createICalInvitation("1", subject, description, start, end, timeZone, recipients, location);
    iCalEvent.setContent(calendar.toString(),"text/calendar;method=PUBLISH;charset=\"UTF-8\"");
    multipart.addBodyPart(iCalEvent);

根据这个错误,outlook 应该有 method=PUBLISH 才能正确呈现事件

4

1 回答 1

1

好像是因为我使用了多部分消息。

当我切换到一个简单的 MimeMessage 时,一切正常。

于 2013-12-06T14:41:37.940 回答