6

我正在使用 MailKit/MimeKit 1.2.7(最新的 NuGet 版本)。

我正在使用 ImapClient 接收可以包含不同附件(图像、文本文件、二进制文件等)的电子邮件。

MimeMessage 的Attachment属性帮助我访问所有这些附件 --- 除非电子邮件是通过 Apple Mail 发送包含图像(Apple Mail 似乎没有附加带有 Content-Disposition“附件”的图像(阅读此处......来自 Jeffrey Stedfast 的评论)在最底部)。

嵌入的图像不是列出

我有哪些选择?真的要一个一个地遍历身体部位,看看里面是什么吗?还是有更简单的解决方案?

4

1 回答 1

9

使用消息文档列出了检查消息中 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.IsMimeType ("image", "*")).ToList ();

希望能给你一些关于如何获得你想要的物品的想法。

于 2015-07-15T14:47:44.050 回答