【问题标题】:Unable to parse tnef part from MimeMessage无法从 MimeMessage 解析 tnef 部分
【发布时间】:2019-08-30 08:59:48
【问题描述】:

我有一个 MimeMessage,其中包含一个类型为 application/ms-tnef 的 winmail.dat 附件。

我相信这是一封 RTF 格式的电子邮件,它是从 Outlook 客户端发送的。我尝试使用 tnefpart 解析它,但遇到以下错误。

这是我的功能:

ProcessMimeMessage(MimeMessage plainMime)
{
 foreach (var attachment in plainMime.Attachments)
 {
  if (attachment.GetType() == typeof(MimeKit.Tnef.TnefPart))
  {
   ReportStatus("Processing Tnef Part (RTF Message): ");
   MimeKit.Tnef.TnefPart tnefPart = (MimeKit.Tnef.TnefPart)attachment;

   try { 
    MimeMessage mimeMessage = tnetPart.ConvertToMessage();
   } catch (Exception ex) {printexception(ex);}
  }
 }
}

这是从 ConvertToMessage 抛出的异常

Invalid addr-spec token at offset 0
at MimeKit.InternetAddress.TryParseAddrspec(Byte[] text, Int32& index, Int32 endIndex, Byte[] sentinels, Boolean throwOnError, String& addrspec, Int32& at)
at MimeKit.MailboxAddress.set_Address(String value)
at MimeKit.Tnef.TnefPart.EmailAddress.TryGetMailboxAddress(MailboxAddress& mailbox)
at MimeKit.Tnef.TnefPart.ExtractMapiProperties(TnefReader reader, MimeMessage message, BodyBuilder builder)
at MimeKit.Tnef.TnefPart.ExtractTnefMessage(TnefReader reader)
at MimeKit.Tnef.TnefPart.ConvertToMessage()

谢谢

【问题讨论】:

    标签: mimekit


    【解决方案1】:

    这只是意味着 TNEF 字段之一中的“电子邮件地址”不是有效的电子邮件地址(语法上)。

    可能只是地址类型字段不是“SMTP”,而 MimeKit 试图将其解析为 rfc822 地址字段。

    我在以下提交中改进了健壮性:https://github.com/jstedfast/MimeKit/commit/15f955b49dc7743d1281afbedce6d327706e161b

    您可以使用 README.md 文件中列出的 MyGet 包来解决此问题。

    【讨论】:

    • 谢谢杰夫。这意味着我需要重新编译 MimeKit 库并在我当前的项目中替换它?
    • 不,MyGet 只是另一个 NuGet 包服务,我已经发布了 MimeKit 的滚动构建,以便它自动发生。
    • 好的,所以我只是从这里获得最新的 2.3.0.6? myget.org/feed/mimekit/package/nuget/MimeKit/2.3.0.6
    • 是的,这就是你需要做的一切
    猜你喜欢
    • 2011-04-03
    • 2011-11-06
    • 2013-10-26
    • 2018-03-31
    • 2020-05-10
    • 2017-11-18
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    相关资源
    最近更新 更多