前言

如果您使用非微软的 Outlook 客户端,接收发件人从 Outlook 或 Exchange 组织发送过来的邮件时,有可能会收到带一个 winmail.dat 附件的邮件;这是因为对方发送邮件时,其富文本的邮件内容被采用了微软独家的 TNEF 格式编码(可能发生在发件人的 MUA 也可能是在发件方的 Exchange 服务器上进行的,取决于对方邮件服务器和用户 MUA 的设定)因此在不支持 TNEF 格式解码的 MUA(邮件用户端代理-邮件客户端)中,将无法正确解析 TNEF 格式的内容,因此就直接显示为原始的 winmail.dat 附件;

TNEF,也称为传输中性封装格式、Outlook 富文本格式或 Exchange 富文本格式,是一种 Microsoft 特定的格式,用于封装 MAPI 邮件属性。所有版本的 Outlook 都完全支持 TNEF。Outlook 网页版(以前称为 Outlook Web App)将 TNEF 转换为 MAPI 并显示格式化的邮件。其他不支持 TNEF 的电子邮件客户端通常将 TNEF 格式的邮件显示为带有 Winmail.dat 或 Win.dat 附件的纯文本邮件。

这种情况发生时,收件方看到的邮件有可能是邮件内容完全空白,也有可能正文显示正常,但原本的附件不可见(包含在 winmail.dat中未被解码)因此,这问题会对异构的邮件收发端带来很多困扰;

虽然 Microsoft 的各种资料都显示在默认配置下 Exchange 不会对发往非本地域名的收件人采用 TNEF 编码,仅只在发送到本地,内部域内才使用 TNEF 格式编码;但在实际环境中,我们经常会观察到有很多从 Exchange 组织发送到外部联系人的邮件也采用了 TNEF 编码发送的问题;

特别是在一些企业环境,在 Exchange Server 前端部署了第三方或商业邮件网关的架构下,经常能在这些第三方的邮件设备中看到对外发送的邮件是以 TNEF 编码发送的;

因此为了帮助这些企业,彻底解决由 TNEF 编码发送邮件带来的各种问题,本文将详细整理有关于在 Exchange 环境下该如何正确设定 TNEF 编码的方法;

解决方案

Microsoft 资料显示,控制邮件是否要以 TNEF 编码发送的规则,与三个部分的设定有关:

  • Remote Domains 远程域设置中的 TNEF 转换选项
  • mail contacts and mail users 邮件用户和联系人选项中的 TNEF 转换选项
  • Outlook 邮件客户端中的 TNEF 转换选项

远程域设置禁用 TNEF

此为全局设定,Exchange 系统默认会有一笔 Default 的远程域配置,是专门针对所有的出站邮件进行控制的,只需要将其中的 TnefEnabled 参数设置为 $flase 即可在所有的出站邮件上完全禁用 TNEF 格式编码,且不会给用户带来任何负面影响;

MailFlow ==> remote domains ==> Default(编辑) ==> Use rich-text format(使用富文本消息格式)

将该选项的值设置为 Never(永不使用),即关闭 TNEF 选项
mceclip0-2-1024x686.png

Exchange命令行

Set-RemoteDomain -Identity Default -TnefEnabled $false

Set-RemoteDomain-TnefEnabled-false.png

用户或联系人设置禁用 TNEF

注意: 该选项主要是针对在 AD 中添加的外部联系人和存储的外部邮箱账号所设置的邮件发送时内容编码设定,对于需要全局解决 TNEF 编码问题来说并没有帮助,仅仅当希望只对特定的外部邮箱地址或账号生效时,才需要使用这种方式;

邮件联系人和邮件用户代表 Exchange 组织中具有外部电子邮件地址的用户。有关详细信息,请参阅收件人。 当您为邮件联系人或邮件用户配置 TNEF 转换选项时,这些选项将应用于发送给该特定收件人的所有邮件。
在 Exchange 命令行管理程序中的Set-MailUser和Set-MailContact cmdlet 上使用 UseMapiRichTextFormat 参数。有效值为:
Always: TNEF 用于发送给收件人的所有邮件。
Never: TNEF 永远不会用于发送给收件人的任何消息。
UseDefaultSettings: 这是默认值。对于邮件用户或邮件联系人,没有特别允许或阻止 TNEF 邮件。是否将 TNEF 邮件发送给收件人取决于远程域的 TNEF 转换设置,或发件人在 Outlook 中配置的 TNEF 转换设置。

Outlook 发信设置禁用 TNEF

在 Outlook 设定中禁用 TNEF 编码,仅仅只对使用该 Outlook 的用户生效,设置后使用该 Outlook 编写并发出的邮件将不在以 TNEF 编码发送;
Outlook-TNEF-HTML.png

提示: 该设置仅仅只是让该 Outlook 在发送邮件给外部收件人时不采用 TNEF 编码,但并不意味着收件人收到该邮件就一定不是 TNEF 编码,这还要取决于发件人组织的 Exchange Server 上的设定,邮件在经过 Exchange Server 时是有可能会被重新编码成 TNEF 后传送的;

这也是为什么通常有用户知晓了 TNEF 的问题后,尝试在 Outlook 中设置了禁止以 rich-text 格式发送邮件后,邮件依然会是 TNEF 编码的原因;

关于优先级顺序

  1. remote domains设置
  2. mail contacts and mail users设置
  3. Outlook设置

参考资料

微软官方文档-Exchange Server:TNEF 转换选项
Disable TNEF Encoding

Last modification:March 7, 2022
如果觉得我的文章对你有用,请随意赞赏