C# 如何访问嵌入式附件?
我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本) 我正在使用ImapClient接收可以有各种附件(图像、文本文件、二进制文件等)的电子邮件 MimeMessage的C# 如何访问嵌入式附件?,c#,mimekit,C#,Mimekit,我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本) 我正在使用ImapClient接收可以有各种附件(图像、文本文件、二进制文件等)的电子邮件 MimeMessage的Attachment属性帮助我访问所有这些附件,除非电子邮件是通过Apple Mail发送的,并且中包含图像(Apple Mail似乎没有附加带有内容处置“附件”的图像(阅读底部Jeffrey Stedfast的评论) 嵌入的图像未在附件集合中列出 我的选择是什么?我真的必须一个接一个地遍历身体部位,看看
Attachment
属性帮助我访问所有这些附件,除非电子邮件是通过Apple Mail发送的,并且中包含图像(Apple Mail似乎没有附加带有内容处置“附件”的图像(阅读底部Jeffrey Stedfast的评论)
嵌入的图像未在附件集合中列出
我的选择是什么?我真的必须一个接一个地遍历身体部位,看看里面有什么吗?还是有更简单的解决方案?该文档列出了检查消息中MIME部分的几种方法,但另一个简单的选择可能是使用MimeMessage
上的BodyParts
属性
开始,让我们看一下<代码> MIMEMeSea.附件属性工作:
public IEnumerable<MimeEntity> Attachments {
get { return BodyParts.Where (x => x.IsAttachment); }
}
或者你可以说你只想要所有的图片:
var images = message.BodyParts.OfType<MimePart> ().Where (x => x.ContentType.IsMimeType ("image", "*")).ToList ();
var-images=message.BodyParts.OfType()。其中(x=>x.ContentType.IsMimeType(“image”、“*”))。ToList();
希望这能为您提供一些关于如何获取所需项目的想法。请看,其中的共识是“不,它们不应该”!哦,很抱歉。不会再发生这种情况。是的,这两个代码片段对我都非常有效。事实上,我两者都需要(首先找到所有附件,然后对图像进行特殊处理)。谢谢你,Jeffrey!这帮了大忙!!警告:内联图像可能仍然没有内容配置集。不要使用答案的第二个片段
var images = message.BodyParts.OfType<MimePart> ().Where (x => x.ContentType.IsMimeType ("image", "*")).ToList ();