【问题标题】:Outlook 365 receives a message that has an attachment that is named "not supported calendar message.ics"Outlook 365 收到一封邮件,其中包含名为“不支持的日历 message.ics”的附件
【发布时间】:2015-02-24 02:33:13
【问题描述】:

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

  • 创建 System.Net.Mail.MailMessage 并设置常用字段 (from/to/subject/etc) 会议信息作为附件 (ICS 文件)
  • 添加备用视图并附加生成的 .ics 文件

    AlternateView 备用 = new AlternateView(vcsAttachment, "文本/日历;方法=请求;"); msg.AlternateViews.Add(alternate);

  • CreateAlternateViewFromString

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

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

这里的问题是:
更新同一会议请求或取消会议请求时,收件人收到一封电子邮件,其附件为 not supportedcalender 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

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

【问题讨论】:

    标签: c# .net calendar outlook office365


    【解决方案1】:

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

    @Eugene D. Gubenkov 提出的使 FROM 地址与 ORGANIZER 地址相同的解决方案有效,但在 Amazon Simple Email Service (SES) 时无效用于发送电子邮件,因为之前必须在 Amazon SES 中批准 FROM 地址。

    我们通过将值设置为 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】:

      @nimi:重申一下,这种奇怪的行为是特定于 Office 365 帐户的。 以下是在 Office 365 社区帮助热线站点中打开的支持票证的链接: MS Community issue link MS 支持人员尚未对此进行任何更新,因此目前唯一的解决方案似乎是将 ORGANIZER:mailto: 地址设置为与 FROM: 地址相同strong> 电子邮件地址。

      【讨论】:

        【解决方案3】:

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

        更新:将 iCalendar 作为only AlternativeView 发送的测试代码表明,您提供的两个 iCalendar 消息本身都没有问题。请看 OWA 的截图:

        【讨论】:

        • 是的,你的建议奏效了。主办方地址和发件人地址必须相同。它在 Outlook 365 上运行良好。所有其他电子邮件客户端都运行良好,即使我们的地址不同。看起来其他电子邮件客户端只是在查看组织者和 UID。
        • @nimi,很高兴听到这个消息!当我遇到类似的问题时,我花了几个小时在谷歌上搜索没有可行的建议,很高兴分享解决方案。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2016-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          • 2012-05-03
          • 1970-01-01
          相关资源
          最近更新 更多