我已经在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);
}
}
}
请帮忙!谢谢!
答案 0 :(得分:1)
您粘贴的代码已经保存了所有附件。
查看原始邮件来源。您认为是附件的每个“附件”都有一个标题Content-Disposition: attachment
吗?如果没有,那就是你遇到的问题。
您可以使用message.BodyParts
并应用自己的逻辑来确定该部分是否属于您认为的“附件”。
另外,有没有办法在下载时确定文件扩展名?目前,例如,如果有pdf附件,则文件会下载,但没有.pdf,因此Windows不知道文件类型。
是。您可以在FileName
对象上的MimePart
属性中检查文件扩展名。