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

时间:2016-06-06 19:11:56

标签: c# mailkit mimekit

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

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

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

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

以下代码来自:MailKit save Attachments。我一直把我的代码基于此。

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

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

  

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

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