如何检查邮件是否有附件(MailKit)

时间:2014-04-22 08:37:32

标签: c# .net imap

我正在使用名为MailKit的IMAP4客户端。

它运行良好,但我知道邮件是否有附件有问题。

我试过了:

var summary = inbox.Fetch(MessageId,MessageSummaryItems.Body,cancel.Token).FirstOrDefault();  
var bodyMultiPart = summary.Body as BodyPartMultipart;
if (bodyMultiPart != null)
{
   foreach (var bodyPart in bodyMultiPart.BodyParts.Where(x => x is BodyPartBasic))
   {
        BodyPartBasic basicPart = bodyPart as BodyPartBasic;
        if (basicPart.ContentDisposition != null && basicPart.ContentDisposition.IsAttachment)
        {
           //add basic part as attachment
        }               
   }    
}

但对于某些消息(例如:以PDF作为附件的消息),内容处置为 null

2 个答案:

答案 0 :(得分:1)

尝试使用MessageSummaryItems.BodyStructure而不是MessageSummaryItems.Body。

BODYSTRUCTURE检索每个身体部位的更多细节,而不是BODY。我认为Content-Disposition标头是BODYSTRUCTURE在普通BODY上检索的额外内容之一。

希望有所帮助。

答案 1 :(得分:0)

当内容处理为空时,您可以使用内容类型作为提示:text / *很少是附件,multipart / *不是提示,其他类型通常暗示附件。

PDF是application / pdf,因此这是根据这种启发式的附件。