Outlook和Office 365无法识别ICS文件

时间:2018-09-25 08:35:35

标签: java outlook office365 icalendar

我正在开发ic发送方功能。 但是我在使用Office 365和Outlook时遇到了一些麻烦。 当我将ics文件发送到Google邮件时,我没有任何问题。 我的活动显示在gmail中。 但是,当我发送到Outlook或Office 365时,我的约会没有出现,但它出现在电子邮件附件(ATT00001.ics)中。 这是发送邮件的代码

private void generateIcal(MimeMessage message) throws MessagingException, IOException {
        message.addHeaderLine("method=REQUEST");
        message.addHeaderLine("charset=UTF-8");
        message.addHeaderLine("component=VEVENT");
        message.setFrom(new InternetAddress(from));
        message.setSubject(subj,"UTF-8");
        StringBuffer sb = new StringBuffer();
// Create the message part
        BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
        messageBodyPart.setHeader("Content-Class", "urn:content-classes:calendarmessage");
        messageBodyPart.setHeader("Content-ID", "calendar_message");
        messageBodyPart.setDataHandler(new DataHandler(
                new ByteArrayDataSource(txt, "text/calendar;charset=utf-8")));//very important

// Create a Multipart
        Multipart multipart = new MimeMultipart();
// Add part one
        multipart.addBodyPart(messageBodyPart);

// Put parts in message
        message.setContent(multipart);
    }

这会生成ics文件

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//TELELANGUE//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:20180714T170000Z
DTEND:20180715T035900Z
SUMMARY:Fête à la Bastille
END:VEVENT
END:VCALENDAR

2 个答案:

答案 0 :(得分:2)

感谢您的答复

最后,我找到了解决方案。 看起来,我们需要在BodyPart中设置“方法”和“名称”参数。

MessageBodyPart.setDataHandler(new DataHandler(
                    new ByteArrayDataSource(buffer.toString(), "text/calendar;method=REQUEST;name=\"meeting.ics\"")));

答案 1 :(得分:0)

1)解析ics。文件并将其设置为收件箱中的事件,以便您无需打开附件即可阅读事件信息。

2)添加交互性,以便您甚至可以直接从Inbox接受/拒绝邀请,而无需打开ics文件。 (这就是Gmail现在的功能)。

有关更多信息,请参见下面的链接:

incoming calendar invites from outlook are blank

.ics files not showing up in the Outlook.com Inbox?