You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MimeKit读取本地.eml文件保存附件时遇Content属性报错求助

解决MailKit保存附件时MimePart.Content不存在的问题

你遇到的错误是因为MimeKit版本更新后API发生了变更——新版本中MimePart类不再包含Content属性,以下是两种可行的解决方法:

方案一:使用WriteTo()方法(推荐)

WriteTo()方法会自动处理内容解码,代码更简洁高效:

foreach(var attachment in message.Attachments) {
    // 获取附件的实际文件名,避免固定名称导致文件被覆盖
    var fileName = attachment.FileName;
    using(var stream = File.Create(fileName)) {
        if (attachment is MessagePart messagePart) {
            messagePart.Message.WriteTo(stream);
        } else if (attachment is MimePart mimePart) {
            mimePart.WriteTo(stream);
        }
    }
}

方案二:使用ContentObject属性

如果需要显式调用解码逻辑,可以用ContentObject替代旧版的Content属性:

foreach(var attachment in message.Attachments) {
    var fileName = attachment.FileName;
    using(var stream = File.Create(fileName)) {
        if (attachment is MessagePart messagePart) {
            messagePart.Message.WriteTo(stream);
        } else if (attachment is MimePart mimePart) {
            mimePart.ContentObject.DecodeTo(stream);
        }
    }
}

额外提示

  • 代码中替换了固定的"fileName"为attachment.FileName,避免循环处理多个附件时重复覆盖同一个文件;
  • 建议保持MimeKit版本为最新稳定版,API变更主要出现在版本迭代的过程中。

内容的提问来源于stack exchange,提问作者HEki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:31:03