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

时间:2010-08-03 20:53:06

标签: 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 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类型设置为 text / calendar 。添加它的过程只是在磁盘上创建一个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"

两者都有四个消息部分:

  1. 文字
  2. HTML
  3. 附件1
  4. 附件2
  5. 在2003版本中,一个是应用程序/八位字节流,一个是日历/文本。在2008年,他们都是日历/文本。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

签入ESM以查看删除TNEF的选项是否为ON。

来自MSDN:

  

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

答案 2 :(得分:2)

您是将VCALENDAR添加为主要(且仅限)MIME部分还是其中一个附件? 有很大的不同。