Outlook无法显示从Exchange传输代理导出的TNEF电子邮件的正文

时间:2017-04-25 16:40:59

标签: c# outlook exchange-server exchange-transport-agents tnef

我正在通过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)。这个问题是在不同的论坛上提出的,但没有真正的答案。如果你想要我,我会提供一个电子邮件的例子。

1 个答案:

答案 0 :(得分:0)

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

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

  1. 尝试按解释here解析它。
  2. 使用Yerase's TNEF Stream Reader [也许是最佳选择]
  3. 使用OpaqueMail [可能不适用于您的传输代理方法]
  4. 尝试使用TnefReader Class
  5. 重建您的解决方案并使用Exchange EWS(= Exchange Web服务)