我正在使用MailKit / MimeKit 1.2.7(最新的NuGet版本)。
我正在使用ImapClient接收可能包含不同附件(图片,文本文件,二进制文件等)的电子邮件。
MimeMessage的Attachment
属性可以帮助我访问所有这些附件 - 除非通过Apple Mail 和包含图像发送电子邮件(Apple Mail似乎没有使用Content-Disposition"附加"附上图片(阅读here ...来自最底层的Jeffrey Stedfast的评论)。
“附件”集合中列出了不的嵌入图像。
我有什么选择?我是否真的必须逐个穿过身体部位,看看里面是什么?或者是否有更简单的解决方案?
答案 0 :(得分:5)
Working with Messages文档列出了一些检查邮件中MIME部分的方法,但另一个简单的选项可能是使用BodyParts
上的MimeMessage
属性。
首先,让我们看看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.Matches ("image", "*")).ToList ();
希望能为您提供有关如何获得所需物品的一些想法。