如何使用 MailKit 下载每封邮件的多个附件?

How to download multiple attachments per message with MailKit?

我已经在 Whosebug 上查看了很多关于此的其他问题,但我仍然感到困惑。

我想下载电子邮件的附件——我成功地做到了这一点,但前提是电子邮件只有一个附件;当一封电子邮件有多个附件时,它将停止工作。

如何在每封电子邮件中下载多个附件?

另外,请问有没有办法在下载的时候判断文件的扩展名?目前,例如,如果有 pdf 附件,文件会下载,但没有 .pdf,因此 windows 不知道文件类型。

下面的代码来自这里:。我的代码一直以此为基础。

foreach (var attachment in message.Attachments)
{
    using (var stream = File.Create ("fileName"))
    {
        if (attachment is MessagePart)
        {
            var part = (MessagePart) attachment;
            part.Message.WriteTo (stream);
        }
        else
        {
            var part = (MimePart) attachment;
            part.ContentObject.DecodeTo (stream);
        }
    }
}

请帮忙!谢谢!

您粘贴的代码已经保存了所有附件。

查看原始消息来源。您认为是附件的每个 "attachment" 是否都有一个 header Content-Disposition: attachment?如果不是,那就是你遇到的问题。

您可以改为使用 message.BodyParts 并应用您自己的逻辑来确定该零件是否是您认为的 "attachment"。

Also, is there a way to determine the file extension when downloading? Currently, for example, if there is a pdf attachment, the file downloads, but with no .pdf, so windows doesn't know the file type.

是的。您可以在 FileName 属性 MimePart objects.

上检查文件扩展名