我正在从Java web应用程序发送带有ICS附件的会议邀请电子邮件。当我将邮件发送给没有使用Exchange服务器的Outlook用户时,一切正常。他们得到适当的接受/拒绝按钮,并可以将会议添加到他们的日历中。
但是,对于Exchange服务器上的用户来说,这不起作用。他们收到会议邀请,但它将自己列为会议组织者,他们无法更改任何会议详细信息。他们不能接受或拒绝,也不能将其添加到日历中。
这几乎就像Exchange正在更改或不喜欢我们发送的ICS格式,但正常的Outlook处理得很好。
这是我们寄出的ICS。除了Gmail和非Exchange Outlook用户之外,还有谁知道我们可以做些什么来让这个功能对Exchange用户有效?
BEGIN:VCALENDAR
PRODID:-//fincrm//iCal4j 1.0//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:128
DTSTAMP:20110927T191127Z
DTSTART;VALUE=DATE-TIME:20110928T082000
DTEND;VALUE=DATE-TIME:20110928T085000
ACTION:DISPLAY
DESCRIPTION:Time is set to 8:20 AM
SEQUENCE:0
ORGANIZER:MAILTO:user1@ltest.com
LOCATION:Financial CRM Application
ATTENDEE:MAILTO:user2@test2.com
SUMMARY:CRM Task #128
END:VEVENT
END:VCALENDAR
谢谢你的建议。
我发现将ICS作为多部分MIME消息发送似乎对Gmail和Exchange都有效。下面是一些相关的Java代码("calendar"是ICS字符串)
// Create an alternative Multipart
Multipart mp = new MimeMultipart("alternative")
BodyPart textPart = new MimeBodyPart();
textPart.setText(eventDescription);
BodyPart calPart = new MimeBodyPart();
calPart.addHeader("content-class", "urn:content-classes:calendarmessage")
calPart.setContent(calendar.toString(), "text/calendar;method=REQUEST")
mp.addBodyPart(textPart);
mp.addBodyPart(calPart);
我知道这是从一段时间以前,但你可以解决这个注册表修复在这里找到:
http://support.microsoft.com/kb/944094我用Outlook 2010在Exchange 2010上进行了测试,当你是组织者时,它允许将第三方事件输入到日历中。
我发现,如果将组织者设置为您,那么Mac上的Outlook 2011将不提供将会议添加到您的日历中的功能。将Organizer从会议中移除似乎效果不错。
我还发现,如果ICS附件是而不是,则附加到多部分消息的最后一个项将被剥离。