mimekit - 无法从 MimeMessage 解析 tnef 部分
问题描述
我有一个 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()
谢谢
解决方案
这只是意味着 TNEF 字段之一中的“电子邮件地址”不是有效的电子邮件地址(从语法上讲)。
可能只是地址类型字段不是“SMTP”,而 MimeKit 试图将其解析为 rfc822 地址字段。
我在以下提交中改进了稳健性:https ://github.com/jstedfast/MimeKit/commit/15f955b49dc7743d1281afbedce6d327706e161b
您可以使用 README.md 文件中列出的 MyGet 包来解决此问题。
推荐阅读
- java - 交换双向链表中的节点组
- intro.js - 在 intro.js 的最后一步之后,onbeforechange 导致错误
- powershell - 尝试使用 powershell 脚本安装 powerpoint 的插件
- android - Delphi/FireMonkey:无法设置 Android 相机工作
- azure - 使用 powershell 将 O365 用户邮箱转换为共享邮箱时出现问题
- javascript - 使用 map() 和 push() 的函数显示不正确的输出
- amazon-sagemaker - 工人死亡/工人断开连接 Sagemaker
- python - cv2.inRange 的下/上参数是什么颜色空间?
- javascript - 切换边框并在反应中选择onClick
- sql - SQL代码,它可以比我这里的更短吗?