带有文本和日历的多部分电子邮件: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 替代消息,

收件箱中的Outlook日历事件视图

获取 Outlook 日历邮件

Outlook 2007 的解决方法,用于在带有边距的图像周围环绕文本?

接受请求后 Outlook 日历从收件箱中消失