Outlook中的ICS作为.msg文件发送

Outlook中的ICS作为.msg文件发送,outlook,attachment,icalendar,Outlook,Attachment,Icalendar,我有一个应用程序,它正在创建一个类似于以下内容的ICS: BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST BEGIN:VEVENT ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:test1234@gmail.com ORGANIZER:MAILTO:test1234@org.com DTSTART:20100803T190000Z DTEND:20100803T200000Z LOCATION:Go to ht

我有一个应用程序,它正在创建一个类似于以下内容的ICS:

BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:test1234@gmail.com
ORGANIZER:MAILTO:test1234@org.com
DTSTART:20100803T190000Z
DTEND:20100803T200000Z
LOCATION:Go to http://100.200.0.55/Login/ParticipantLogIn.asp and enter
   Conference ID: 0000
SEQUENCE:0
UID:352C75A6-0117-4B3A-AFE6-7B18649CD45A
DTSTAMP:20100803T184455Z
DESCRIPTION:TO ACCESS THE WEB CONFERENCE:\n\n    Click on the link bel
  ow:\n
SUMMARY:Test User's Conference
PRIORITY:5
CLASS:PUBLIC
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
当发送到Gmail帐户时,它是作为ICS文件发送的,并且一切都是正确的。当发送到Outlook 2003或2007时,它将作为.msg文件附加,并且是二进制文件。正在使用的服务器是Windows server 2008。我已将ics mime类型设置为文本/日历。添加它的过程只是在磁盘上创建一个tmp文件并将其添加为附件,然后使用CDO发送。有人知道Outlook将其添加为.msg的原因吗

此外,我们使用相同的exchange服务器,它在Windows server 2003中运行良好

正在使用网络跟踪更新附件

2003年

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4073

Content-Type: application/octet-stream;
    name="meeting.ics"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
    filename="meeting.ics"
2008年

X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6002.18197
Content-Type: text/calendar;
    name="meeting.ics"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
    filename="meeting.ics"
在这两个模块中,有四个消息部分:

  • 正文
  • HTML
  • 附件1
  • 附件二

  • 在2003版本中,一个是应用程序/八位字节流,另一个是日历/文本。2008年,它们都是日历/文本

    这似乎是Windows Server 2008上CDO的问题。对每台服务器上的网络流量进行跟踪,结果显示所传递的消息存在巨大差异


    似乎出于某种原因AddAttachment方法没有使用与2003年相同的MIME。手动添加附件并控制MIME将修复它

    电子邮件中可能缺少TNEF数据。如果是这种情况,则电子邮件将呈现为纯文本。您应该检查TNEF设置,看看它是否从电子邮件中删除

    检查ESM以查看删除TNEF的选项是否启用

    从MSDN:

    除了接收客户, 邮件服务器并不少见 将TNEF信息从 在邮件传递时发送邮件。 如果打开了删除TNEF的服务器选项,客户端将始终收到 邮件的纯文本版本。 Microsoft Exchange Server是一个 邮件服务器应用程序示例 它可以选择删除TNEF 来自消息


    您是将VCALENDAR添加为主要(也是唯一)MIME部分还是作为附件之一?
    这有很大的区别。

    客户端可以很好地接收HTML消息,但我可以在附件中检查这一点以进行验证。这很奇怪,因为TXT附件也很好(这将支持您的答案)。我添加了一个文本文件(Meeting.ICS),或者WinServer 2008之前的文本文件,其中包含ICS文本作为附件。我将mime设置为text/calendar。然后您会得到预期的结果:一封带有附加约会的普通邮件。您的ICS必须是唯一的MIME部分,并且消息头本身必须将类型指定为text/calendar.BTW,您的网络流量跟踪显示什么?你能把整个MIME信息都发出去吗?是的,我会在周一发。为什么它在2003年和更早的版本中是这样工作的?它使用CDO AddAttachment和IBModyPart设置,如下所示: