EML 文件中的 RTF 消息正文
Posted
技术标签:
【中文标题】EML 文件中的 RTF 消息正文【英文标题】:RTF message bodies in EML files 【发布时间】:2011-10-05 08:51:56 【问题描述】:我们使用LumiSoft.NET MIME library 创建 EML 文件。这些 EML 文件由数据库值构成。电子邮件的正文可以是纯文本、RTF 或 html。我们知道正文何时是 HTML,因此,当发生这种情况时,我们的 EML 文件的内容类型使用以下行设置:
Content-Type: text/html; charset="utf-8"
当body是纯文本或者RTF时(因为我们不知道是哪一个),我们就这样设置content-type为RTF
Content-Type: text/rtf; charset="utf-8".
HTML EML 文件在不同的产品中显示得很好……但不同产品对 RTF EML 文件的解释似乎不同。这工作了多年,我们生成的 EML 文件针对 Outlook Express 进行了 QA,并且它们正常显示。但最近我们有一些客户报告了这些电子邮件以附件形式显示的问题。在 Outlook 2007 SP2 和 Outlook 2010 中,电子邮件正文确实显示为附加到电子邮件的 TXT 文件......并且电子邮件本身的正文是空的。此外,我们使用名为 dtSearch 的产品,当它将这些 EML 文件转换为 HTML 时,它会执行类似的转换,其中 EML 文件的主体显示在名为 Attachment0.DAT 的附件的内容中。此外,我们还通过 Outlook Redemption 处理这些 EML 文件,并且与 Outlook 2010 一样,邮件正文位于 TXT 文件附件中。如此奇怪的行为……这是它的一些截图。
Outlook Express:
展望 2010:
Here's the actual EML file.
我们在这里使用 RTF 作为内容类型是不是做错了什么?它似乎在过去有效并与 Outlook Express 一起使用。建议使用 Redemption 而不是 EML 格式切换到 MSG 格式以缓解这种情况,但我相信这对 Outlook 或 MAPI 库的用户计算机提出了先决条件....但如果 EML 格式未解析不同的产品都一样,那么也许MSG格式是要走的路。
【问题讨论】:
【参考方案1】:电子邮件的内容看起来不是有效的 rtf(没有幻数“\rtf”)。
它是带有引用的可打印传输编码的纯文本。
您应该使用内容类型:text/plain。
【讨论】:
我知道这个特殊的 EML 文件在正文中没有 RTF“标签”。我也明白使用 text/plain 将在 Outlook 2010 中工作......但我们应用程序中的逻辑工作方式是我们将它们全部设置为 RTF,因为它们可能包含也可能不包含它。如上所示,使用 Outlook Express,这不是问题。 EML 正文显示正确。这让我回到我原来的问题,为什么?此外,如果我们对应用程序逻辑进行这种更改,这种情况会在下一个 Outlook(或其他电子邮件应用程序)中再次发生吗?希望“为什么”的答案能够解决这个问题。 @Biggert 您的应用程序逻辑不正确。当您传输的消息是纯文本时,您不应该设置 rtf 内容类型。 你需要修复你的应用程序逻辑,即使你必须做一些测试纯文本是否包含\rtf
,如果包含则设置为text/rtf;
,否则设置为text/plain
.您不知道的默认设置应该是纯文本而不是 rtf。以上是关于EML 文件中的 RTF 消息正文的主要内容,如果未能解决你的问题,请参考以下文章
从具有相同名称但不同扩展名的文件(*.pdf 和 *.rtf)中,如果 *.rtf 较新,则在控制台上输出消息
如何在 Outlook 中编辑使用 email.generator 生成的 .eml 文件?