Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问嵌入式附件?_C#_Mimekit - Fatal编程技术网

C# 如何访问嵌入式附件?

C# 如何访问嵌入式附件?,c#,mimekit,C#,Mimekit,我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本) 我正在使用ImapClient接收可以有各种附件(图像、文本文件、二进制文件等)的电子邮件 MimeMessage的Attachment属性帮助我访问所有这些附件,除非电子邮件是通过Apple Mail发送的,并且中包含图像(Apple Mail似乎没有附加带有内容处置“附件”的图像(阅读底部Jeffrey Stedfast的评论) 嵌入的图像未在附件集合中列出 我的选择是什么?我真的必须一个接一个地遍历身体部位,看看

我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本)

我正在使用ImapClient接收可以有各种附件(图像、文本文件、二进制文件等)的电子邮件

MimeMessage的
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 ();