带有文本和日历的多部分电子邮件:Outlook 无法识别 ics
Posted
技术标签:
【中文标题】带有文本和日历的多部分电子邮件:Outlook 无法识别 ics【英文标题】:Multipart email with text and calendar: Outlook doesn't recognize ics 【发布时间】:2013-10-31 16:14:59 【问题描述】:我在使用 Outlook 2007 时遇到问题。当发送带有“文本/日历”部分的“多部分/替代”电子邮件时,Outlook 可以识别日历事件,这就是它必须的方式。 但是当添加“文本/纯文本”部分时,Outlook 只显示纯文本,缺少日历部分(但它存在于电子邮件的源代码中)。
源码如下:
[...]
Content-Type: multipart/alternative;
boundary="_=_swift_v4_138243630552664dd1bc83e_=_"
--_=_swift_v4_138243630552664dd1bc83e_=_
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
[...the plain message...]
--_=_swift_v4_138243630552664dd1bc83e_=_
Content-Type: text/calendar; charset=utf-8
Content-Transfer-Encoding: quoted-printable
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//GourmetPortal//NONSGML rr//DE
BEGIN:VEVENT
UID:res-Burkert
CREATED:20131030T113000Z
ORGANIZER;CN=3DSven Burkert:MAILTO:[...]
SUMMARY:[...]
DESCRIPTION:[...]
DTSTART:20131030T113000Z
END:VEVENT
END:VCALENDAR
--_=_swift_v4_138243630552664dd1bc83e_=_--
【问题讨论】:
【参考方案1】:为确保 Outlook 始终能够识别 iCal 部分,请创建一条消息,其中文本/日历是唯一的 MIME 部分。其他所有内容(主体、附件等)都应嵌入 VEVENT 部分。
【讨论】:
VEVENT 中的附件?这可能吗?为什么文本/日历部分是唯一的哑剧部分?是否存在已知的 Outlook 错误? 当然,这就是“ATTACH”标头的用途(您可以拥有多个)。 Outlook 需要能够将邮件识别为会议邀请,这意味着主要部分应该是文本/日历。如果您可以将其设为唯一部分,Outlook 肯定会识别会议邀请。 @DmitryStreblechenko 你能看看我的this question吗?我很难理解为什么 Outlook 无法识别我的电子邮件邀请中的事件名称。【参考方案2】:您在内容类型中都缺少 iTIP 方法:
Content-Type: text/calendar; charset="utf-8"; method=REQUEST
以及作为 VCALENDAR 属性:
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
PRODID:-//GourmetPortal//NONSGML rr//DE
方法可能是 PUBLISH 或 REQUEST(在这种情况下,您还会错过一些 ATTENDEE 属性)。
然后,一些客户端在 multipart/alternative 中忽略 iMIP,只将其视为附件,因此您可能需要尝试以下结构:
multipart/mixed
multipart/alternative
text/plain
text/calendar;method=REQUEST
text/calendar (with a content-disposition:attachment)
本质上,您添加了两次附件。来自 google/yahoo 日历和闪电的 iMIP 邀请具有这样的结构。
【讨论】:
我已经更改了邮件,现在看起来像这样:Content-Type: text/calendar; method=PUBLISH; charset=utf-8 Content-Transfer-Encoding: quoted-printable BEGIN:VCALENDAR VERSION:2.0 METHOD:PUBLISH
但 Outlook 仍然无法识别日历事件。问题似乎是别的。就像我在第一篇文章中提到的那样,删除 text/plain 部分时一切正常。
谢谢,这就是解决方案:日历文件必须添加为文件附件, that means we have these headers:
Content-Type: text/plain;名称=myCalendar.ics 内容处置:附件;文件名=myCalendar.ics`
@arnaudq 你有如何创建这样一个结构的工作示例吗?
@ArnaudQuillaud 你也可以看看this question 吗?
您能否详细说明这个答案,而不仅仅是代码块?我不确定你在说什么以及如何使用这些!提前致谢以上是关于带有文本和日历的多部分电子邮件:Outlook 无法识别 ics的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件
使用 perl 发送带有文件附件的多部分文本/html 替代消息,