1

我正在通过 Exchange 2016 传输代理导出电子邮件并将它们保存到磁盘。Outlook 成功打开所有电子邮件,解析标题,但 ts 无法显示从 Outlook 客户端发送的邮件正文。类型是:

Content-Type: application/ms-tnef; name="winmail.dat"

其他类型(MIME 等)都可以。导出的消息确实包含正文。我能够将其转换为 .msg 并且在此操作后一切正常。为什么会这样?

邮件导出方式:

  using (var stream = new MemoryStream())
  {
    email.MimeDocument.WriteTo(stream);
    storageManager.SaveStreamToFile(stream, path);
    size = stream.Length;
  } 

我已经尝试过使用各种传输管道事件(https://technet.microsoft.com/en-us/library/bb125012(v=exchg.150).aspx)。这个问题在不同的论坛上被问过,但没有真正的答案。如果您愿意,我将提供一个电子邮件示例。

4

1 回答 1

0

TNEF(传输中性封装格式)是 Microsoft [更多技术信息]使用的专有电子邮件附件格式。如果您没有正确处理,您最终会以附件形式出现 winmail.dat [在此处解释]

要从 winmail.dat 获取内容,您现在有多种选择:

  1. 尝试像解释这里一样解析它。
  2. 使用Yerase 的 TNEF Stream Reader [也许是最好的选择]
  3. 使用OpaqueMail [可能不适用于您的传输代理方法]
  4. 尝试使用TnefReader 类
  5. 重建您的解决方案并使用Exchange EWS(= Exchange Web 服务)
于 2017-04-25T16:59:43.507 回答