MimeKit 看不到 html 的附件

MimeKit dosen't see attachments by html

我正在使用 MimeKit 从邮件中下载 .PDF 附件。今天我收到一封有两个附件的邮件,第一个是“part_1.html”,第二个是“sample.pdf”。这是我第一次收到 .HTML 附件(这是一个邮件正文,但也在附件中,idk)和我的代码 return null 在附件中。我不明白为什么在代码中,邮件没有附件。如果我再次发送这封邮件但没有这个 html somethink everythink works properly.

代码正在查找 .PDF 的附件,并在“IsAnyPdf”上设置为真,接下来我的代码从列表中下载附件,但现在列表为空。 代码:

var Email = client.Inbox.GetMessage(MailId);
            ListOfAttachments = Email.Attachments.Where(x => x.IsAttachment).ToList();
            IsAnyPDF = ListOfAttachments.Any(x => x.ContentDisposition.FileName?.EndsWith(".pdf", StringComparison.CurrentCultureIgnoreCase) ?? x.ContentType.Name?.EndsWith(".pdf", StringComparison.CurrentCultureIgnoreCase) ?? false);

是否可以在 MailKit.Attachments 中以某种方式避免这种附件?

这是不必要的:

ListOfAttachments = Email.Attachments.Where(x => x.IsAttachment).ToList();

MimeMessage.Attachments 已经只包括 IsAttachment 为 true 的部分,所以这是一种浪费。

至于为什么您的代码找不到 pdf“附件”,问题 100% 保证是 pdf“附件”不是“附件”,而是添加到邮件中作为“内联”。

所以...这样做:

var Email = client.Inbox.GetMessage(MailId);
IsAnyPDF = Email.BodyParts.OfType<MimePart>().Any(x => x.ContentDisposition.FileName?.EndsWith(".pdf", StringComparison.CurrentCultureIgnoreCase) ?? x.ContentType.Name?.EndsWith(".pdf", StringComparison.CurrentCultureIgnoreCase) ?? false);