如何使用 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.
上检查文件扩展名
我已经在 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.