0

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

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

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

另外,有没有办法在下载时确定文件扩展名?目前,例如,如果有 pdf 附件,则文件下载,但没有 .pdf,因此 windows 不知道文件类型。

下面的代码来自这里:MailKit 保存附件。我一直以此为基础编写代码。

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);
        }
    }
}

请帮忙!谢谢!

4

1 回答 1

1

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

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

您可以改为使用message.BodyParts并应用您自己的逻辑来确定该部件是否是您认为是“附件”的部件。

另外,有没有办法在下载时确定文件扩展名?目前,例如,如果有 pdf 附件,则文件下载,但没有 .pdf,因此 windows 不知道文件类型。

是的。您可以检查对象FileName属性上的文件扩展名。MimePart

于 2016-06-07T01:17:17.900 回答