会议邀请,Outlook 2010 / Office 365中无法识别附件

时间:2011-12-21 17:17:46

标签: .net outlook outlook-2010 mailmessage meeting-request

我们有一个.NET应用程序,可以手动生成会议邀请以发送给用户。我们使用的流程如下:

  • 创建System.Net.Mail.MailMessage并设置常用字段(从/到/ subject / etc) 会议信息作为附件(ICS文件),7位编码 - 这对于无法识别Outlook风格的邀请的邮件客户端是必要的
  • 添加两个备用视图,text / plain和text / html,均为电子邮件文本的7位编码
  • 添加另一个备用视图,其中包含“text / calendar; charset = UTF-8; method = REQUEST”,其ICS文本与上面附带的ICS文件相同,也是7位编码
  • 发送消息

这适用于传统的Outlook 2007 / Exchange设置(附件不可见,并且邮件被视为会议请求),但是一旦我们升级到Outlook 2010 / Office 365,就无法识别嵌入式ICS数据消息显示为附加了ICS文件的常规消息。删除附件会生成正确识别的消息。我们不确定是导致更改的新Outlook版本还是Office 365,但它必须是其中之一。

有没有人知道为什么会改变它以及我们如何解决它?

3 个答案:

答案 0 :(得分:2)

我们遇到了类似的问题。在我们的案例中,我们的邮件服务器从Exchange 2003升级到Exchange 2010,我们公司将一些人的电子邮件帐户迁移到2010年。我们仍然使用outlook 2007作为前端。我们有一个.NET应用程序,可以将会议邀请创建为Alernative View并将其发送给收件人。那些已迁移电子邮件帐户的人不再接收邀请作为会议请求,而只是普通电子邮件。那些留在2003年交换中的人没有问题作为会议请求获得邀请。我在网上搜索,发现Exchange 2010改变了它处理.ics文件的方式,它比以前的版本更具限制性。最糟糕的是它没有遵循RFC标准,并且微软认为,试图找出哪个部分阻止他们的交换2010正确解释.ics并不是他们的关注。所以我的解决方法是不发送.ics作为替代视图,而是将其作为附件发送。当在已迁移到2010的电子邮件帐户中收到该附件时,用户可以看到该附件,并且用户可以单击该附件以将其导入其日历。

答案 1 :(得分:0)

Outlook / Exchange期望邮件类型为文本/日历,而不是文本/多部分。

答案 2 :(得分:0)

最近在使用System.Net.Mail时遇到此问题:

  1. 使用iCalendar作为电子邮件发送电子邮件的替代视图(文本/日历),不附加附件:有效。 -我使用iCal.Net生成iCalendar消息。
  2. 使用带附件的iCalendar作为备用视图(文本/日历)发送电子邮件:它可在Windows 10 Mail上使用,但不起作用在Outlook365上可用。

此问题的根本原因是: 当您的电子邮件包含附件时,MailMessage将生成如下消息:

multipart/mixed
  multipart/alternative
    text/plain
    text/calendar;method=REQUEST
  multipart/mixed
    content-type (with a content-disposition:attachment)

但是Outlook365期望该消息为:

multipart/mixed
  multipart/alternative
    text/plain
    text/calendar;method=REQUEST
  content-type (with a content-disposition:attachment)

Outlook收到错误的附件格式时。某些方法,它将忽略日历部分。

我的解决方案:我决定使用MailKit而不是System.Net.Mail发送电子邮件。通过使用此库,我可以控制邮件格式。