如何访问嵌入的附件
本文关键字:何访问 访问 | 更新日期: 2023-09-27 18:02:57
我正在使用MailKit/MimeKit 1.2.7(最新的NuGet版本(。
我正在使用ImapClient接收可以具有各种附件(图像,文本文件,二进制文件等(的电子邮件。
MimeMessage的Attachment
属性可帮助我访问所有这些附件---,除非电子邮件是使用Apple Mail发送的并且包含图像(似乎Apple Mail不会附加带有内容处置"附件"的图像(阅读此处...杰弗里·斯特德法斯特在最底部的评论(。
嵌入的图像未在附件集合中列出。
我有哪些选择?我真的必须一个接一个地遍历身体部位,看看里面有什么吗?还是有更简单的解决方案?
"使用邮件"文档列出了几种检查邮件中 MIME 部分的方法,但另一个简单的选项可能是在 MimeMessage
上使用 BodyParts
属性。
首先,让我们看一下 MimeMessage.Attachments
属性的工作原理:
public IEnumerable<MimeEntity> Attachments {
get { return BodyParts.Where (x => x.IsAttachment); }
}
正如您已经注意到的,此属性不返回您要查找的附件的原因是因为它们没有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 ();
希望这能给你一些关于如何获得你想要的物品的想法。