如何访问嵌入式附件?
How to access embedded attachments?
我正在使用 MailKit/MimeKit 1.2.7(最新的 NuGet 版本)。
我正在使用 ImapClient 接收可能包含各种附件(图像、文本文件、二进制文件等)的电子邮件。
MimeMessage 的 Attachment
属性 帮助我访问所有这些附件 --- 除非使用 Apple Mail 和 发送的电子邮件包含图像(看起来Apple Mail 不附加带有 Content-Disposition "attachment" 的图像(阅读 here ... 最底部 Jeffrey Stedfast 的评论)。
嵌入的图像未列在附件collection中。
我有哪些选择?我真的必须一个一个地遍历 body 个部分,看看里面有什么吗?或者有更简单的解决方案吗?
Working with Messages 文档列出了几种检查消息中 MIME 部分的方法,但另一个简单的选择可能是使用 [=14= 上的 BodyParts
属性 ].
首先,让我们来看看 MimeMessage.Attachments
属性 是如何工作的:
public IEnumerable<MimeEntity> Attachments {
get { return BodyParts.Where (x => x.IsAttachment); }
}
正如您已经注意到的,此 属性 没有 return 您正在寻找的附件的原因是因为它们没有 Content-Disposition: attachment
这就是MimeEntity.IsAttachment
属性 正在检查。
另一个规则可能是检查文件名参数。
var attachments = message.BodyParts.Where (x => x.ContentDisposition != null && x.ContentDisposition.FileName != null).ToList ();
或者您可以说您只想要所有图片:
var images = message.BodyParts.OfType<MimePart> ().Where (x => x.ContentType.IsMimeType ("image", "*")).ToList ();
希望这能给你一些关于如何获得你想要的物品的想法。
我正在使用 MailKit/MimeKit 1.2.7(最新的 NuGet 版本)。
我正在使用 ImapClient 接收可能包含各种附件(图像、文本文件、二进制文件等)的电子邮件。
MimeMessage 的 Attachment
属性 帮助我访问所有这些附件 --- 除非使用 Apple Mail 和 发送的电子邮件包含图像(看起来Apple Mail 不附加带有 Content-Disposition "attachment" 的图像(阅读 here ... 最底部 Jeffrey Stedfast 的评论)。
嵌入的图像未列在附件collection中。
我有哪些选择?我真的必须一个一个地遍历 body 个部分,看看里面有什么吗?或者有更简单的解决方案吗?
Working with Messages 文档列出了几种检查消息中 MIME 部分的方法,但另一个简单的选择可能是使用 [=14= 上的 BodyParts
属性 ].
首先,让我们来看看 MimeMessage.Attachments
属性 是如何工作的:
public IEnumerable<MimeEntity> Attachments {
get { return BodyParts.Where (x => x.IsAttachment); }
}
正如您已经注意到的,此 属性 没有 return 您正在寻找的附件的原因是因为它们没有 Content-Disposition: attachment
这就是MimeEntity.IsAttachment
属性 正在检查。
另一个规则可能是检查文件名参数。
var attachments = message.BodyParts.Where (x => x.ContentDisposition != null && x.ContentDisposition.FileName != null).ToList ();
或者您可以说您只想要所有图片:
var images = message.BodyParts.OfType<MimePart> ().Where (x => x.ContentType.IsMimeType ("image", "*")).ToList ();
希望这能给你一些关于如何获得你想要的物品的想法。