Outlook 365收到一条消息,其中包含一个名为"不支持日历message.ics"的附件。

时间:2014-12-26 23:10:19

标签: c# .net calendar outlook office365

我有一个.NET应用程序,它以.ics文件的形式发送会议请求。以下是我正在做的一些事情,以使其发挥作用。

  • 创建System.Net.Mail.MailMessage并设置常用字段 (从/到/主题/等)和会议信息作为附件(ICS 文件)
  • 添加备用视图并附加生成的.ics文件

    AlternateView alternate = new AlternateView(vcsAttachment," text / calendar; method = REQUEST;"); msg.AlternateViews.Add(候补);

  • CreateAlternateViewFromString

    AlternateView alternate1 = AlternateView.CreateAlternateViewFromString(body),null," text / html"); msg.AlternateViews.Add(alternate1);

安排会议显示预期的“接受”,“拒绝”按钮。    http://screencast.com/t/lU08FiXowhc

这里的问题是:
更新同一会议请求或取消会议请求时,收件人正在收到附件的电子邮件不支持日历message.ics http://screencast.com/t/kD89nbTa

以下是为安排会议而生成的.ics。

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:participant@company.com
ORGANIZER;CN="Organizer":MAILTO:organizer@test.ccc
DTSTART:20141231T010000Z
DTEND:20141231T010000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:Company-interview-123
DTSTAMP:20141223T232322Z
SUMMARY:Interview Scheduled for Job
DESCRIPTION:test
LOCATION:Test Location
PRIORITY:5
X-MICROSOFT-CDO-IMPORTANCE:1
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
为重新安排会议请求而生成的

.ics文件。

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:participant@company.com
ORGANIZER;CN="Organizer":MAILTO:organizer@test.ccc
DTSTART:20141231T010000Z
DTEND:20141231T010000Z
TRANSP:OPAQUE
SEQUENCE:1
UID:Company-interview-123
DTSTAMP:20141223T232538Z
SUMMARY:Updated Interview Scheduled for Job
DESCRIPTION:test
LOCATION:Test Location
PRIORITY:5
X-MICROSOFT-CDO-IMPORTANCE:1
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

我在这里遗漏了什么吗?对于其他电子邮件客户端,其工作正常,我可以查看会议请求。

4 个答案:

答案 0 :(得分:2)

我也遇到问题"不支持calender message.ics"当iCalendar ORGANIZER 的地址不等于电子邮件(会议请求) FROM 地址时。在第二种情况下确保它们在重新安排时是相同的。

更新:将iCalendar作为 AlternativeView发送的测试代码显示您提供的两条iCalendar消息本身都很好。请参阅OWA的截图:

enter image description here

答案 1 :(得分:2)

在我们的.NET应用程序中,.ics日历事件存在此问题。

@Eugene D. Gubenkov提供的解决方案,用于使 FROM 地址与 ORGANIZER 地址相同,但在Amazon Simple Email Service(SES)上不起作用用于发送电子邮件,因为之前 FROM 地址必须在Amazon SES中得到批准。

我们通过将值设置为 SentBy 属性(https://github.com/rianjs/ical.net/blob/master/v2/ical.NET/DataTypes/Organizer.cs)来解决此问题。

CalendarEvent calendarEvent = new CalendarEvent();
string organizer = "email-organizer@example.com";
string defaultFromEmailAddress = "email-from@example.com";
calendarEvent.Organizer = new Organizer()
{
    Value = new Uri("mailto:" + organizer),
    SentBy = new Uri("mailto:" + defaultFromEmailAddress)
};

更改后,生成的.ics如下:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
BEGIN:VEVENT
ATTENDEE;RSVP=TRUE:mailto:email-organizer@example.com
ATTENDEE;RSVP=TRUE:mailto:attendee1@example.com
ATTENDEE;RSVP=TRUE:mailto:attendee2@example.com
DESCRIPTION:Description for this meeting
DTEND:20190927T163000Z
DTSTAMP:20190927T111043Z
DTSTART:20190927T153000Z
LOCATION:Slack
ORGANIZER;SENT-BY="mailto:email-from@example.com":mailto:
email-organizer@example.com
PRIORITY:0
SEQUENCE:0
SUMMARY:Description for this meeting
TRANSP:OPAQUE
UID:194e3146-ba93-4e32-9175-6aecbe87b682
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//
 EN\">\n<html>\n<head>\n    <meta charset="utf-8" />\n    <title></title>\
 n</head>\n<body>\n    <label>Meeting T
 itle: Meeting to test ics calendar</label>\n    <br />\n    <label>Date: 
 09.27.2019 - 09.27.2019</label>\n    <br />\n    <label>Time: 5:30 PM - 6
 :30 PM</label>\n    <br />\n    <label>Location: Slack</label>\n    <br /
 >\n    <p>Please respond to the event to process the invitation and updat
 e your calendar. Additional meeting details and the agenda may be found <
 a href="http://URLToMeetingDetailsPage">here</a>
 </p></body>\n</html>
END:VEVENT
END:VCALENDAR

主要区别是在此行中添加了 SENT-BY

ORGANIZER;SENT-BY="mailto:email-from@example.com":mailto:email-organizer@example.com

Outlook中“日历”事件的屏幕截图: Calendar event in Outlook

答案 2 :(得分:0)

不得将ICS文件作为附件发送。它必须是具有正确设置的内容类型标题的邮件的唯一MIME部分。

答案 3 :(得分:0)

@nimi:重申这一事实,发现这种奇怪的行为是特定于Office 365帐户的。 这是指向Office 365社区帮助热线网站中打开的支持服务单的链接: MS Community issue link 目前还没有来自MS支持人员的任何更新,所以目前唯一的解决方案似乎是将 ORGANIZER:mailto:地址设置为与 FROM相同: 电子邮件地址。