我必须从经典 ASP 应用程序发送日历邀请才能接收到 Outlook。使用各种不同的电子邮件组件(ASPEmail、ASPMail、JMail)我发送了带有附件的邮件,但是当收到邮件时,Outlook 不会将附件识别为日历邀请,而 GMail 会。
在 JMail 中,我可以将附件的内容类型设置为文本/日历,但这没有区别。
邀请已在此处进行了测试,并且验证良好。
我对这个问题的任何解决方案持开放态度,包括将邀请作为内联工作,但不幸的是 .NET 和 PHP 不是选项。
这是一些测试代码 - JMail 是我能找到的唯一可以设置附件内容类型的组件。
set msg = Server.CreateOBject( "JMail.Message" )
set attachment = Server.CreateOBject( "JMail.Attachment" )
msg.Logging = true
msg.silent = true
msg.From = "website@userdomain.com"
msg.FromName = "Website"
msg.AddRecipient "outlook@userdomain.com", "Outlook"
msg.Subject = "Meeting"
msg.Body = "Meeting invite attached"
'although cid not needed, i could only get this to work by using cid =
cid = msg.AddAttachment (server.mappath(".\invite.ics"), false, "text/calendar")
msg.ContentType = "text/calendar"
if not msg.Send("mail.userdomain.com" ) then
Response.write "<pre>" & msg.log & "</pre>"
else
Response.write "Message sent succesfully!"
end if
在将消息内容类型也设置为文本/日历后,当单击附件时,它现在显示为十六进制而不是简单的文本文件。它仍然未被识别为邀请。这是它的顶部:
This is a multipart message in MIME format.
----NEXT_BM_D29EC5CD87384387A59E240A29CD74DD
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: Quoted-Printable
Meeting invite attached
----NEXT_BM_D29EC5CD87384387A59E240A29CD74DD
Content-Type: text/calendar; name="=?iso-8859-1?Q?invite=2Eics?="
Content-Transfer-Encoding: base64
Content-Description: =?iso-8859-1?Q?invite=2Eics?=
Content-Disposition: attachment; filename="=?iso-8859-1?Q?invite=2Eics?="
Content-ID: <8AB4D71598B445B88353F487644AC2F3>
顺便说一句,我正在使用 Office Professional Plus 2013 的测试版。
在 GMail 收到的类似消息显示了这些标头:
Content-Type: text/calendar;
boundary="--NEXT_BM_675B64750B5649EAAF1A3F3D9EC69302"
Return-path: <website@userdomain.com>
This is a multipart message in MIME format.
----NEXT_BM_675B64750B5649EAAF1A3F3D9EC69302
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: Quoted-Printable
Meeting invite attached
----NEXT_BM_675B64750B5649EAAF1A3F3D9EC69302
Content-Type: text/calendar; name="=?iso-8859-1?Q?invite=2Eics?="
Content-Transfer-Encoding: base64
Content-Description: =?iso-8859-1?Q?invite=2Eics?=
Content-Disposition: attachment; filename="=?iso-8859-1?Q?invite=2Eics?="
Content-ID: <C6C87170FE7B4BC581E7EE33EE24BC71>
所以消息类型确实设置为文本/日历,但消息的文本部分设置为纯文本。
使用代码的修改版本,将正文设置为实际的 iCal 数据,并且内容类型为文本/日历,Outlook 仍然不会将其识别为邀请,而是使用邮件主题将正文转换为附件作为文件名,例如 test.ics