我正在使用MailKit/MimeKit1.2.7(最新的NuGet版本)。
我正在使用ImapClient接收电子邮件,可以有不同的附件(图像,文本文件,二进制文件等)。
MimeMessage的Attachment属性帮助我访问所有这些附件--除非电子邮件是用Apple 发送的,包含图像(似乎Apple没有附加带有内容处理“附件”的图像(请阅读这里 .以下是杰弗里·斯特法斯特的评论)。
嵌入的图像是,而不是附件集合中列出的。
我有什么选择?我真的要一个一个地遍历身体的各个部分,看看里面是什么吗?还是有更简单的解决方案?
发布于 2015-07-15 14:47:44
处理消息文档列出了检查消息中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 ();希望这能给你一些关于如何得到你想要的东西的想法。
https://stackoverflow.com/questions/31423809
复制相似问题