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

标签 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

最佳答案

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

BODYSTRUCTURE 比 BODY 检索每个 body 部位的更多详细信息。我认为 Content-Disposition header 是 BODYSTRUCTURE 通过普通 BODY 检索的额外内容之一。

希望对您有所帮助。

关于c# - 如何检查邮件是否有附件(MailKit),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214514/

相关文章:

c# - 错误: Cannot find test-cloud. exe,找不到 "--uitest-tools-dir"指定的路径

c# - 检查本地组是否已存在的优雅方法

c# - 如何从 Windows 应用程序中抓取数据网格

java - 如何从 MessageIDTerm 获取 Yahoo IMAP 配置文件的消息?

c# - 具有空命名空间的 C# 类

c# - 使用 C# 在 Windows Server 上添加和删除 IPSec 策略有哪些选项?

.net - 带有用于角色授权的空格的 AD 组

c# - 在哪里放置单元测试项目

java - 类格式错误 : Illegal class modifiers in class . .. 0x209

java - com.googlecode.jdeltasync.UnrecognizedErrorCodeException : 3206: User has maxed out their sync relationship quota