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

如何为已加载的MimeMessage(MimeKit)添加附件?

使用MimeKit为已加载的邮件添加文本附件

要实现给从流中加载的MimeMessage添加文本附件,核心是处理邮件的MIME体结构,以下是通用实现方案:

核心逻辑

邮件的MIME体分为两种情况:

  • 如果原邮件的Body是Multipart类型(比如常见的MultipartMixed),可以直接向该Multipart集合添加附件
  • 如果原邮件的Body是单一MIME部分(纯文本/HTML),需要先将原内容包装为MultipartMixed,再添加附件

实现AddSomeInfoAttachment方法

下面的代码会创建原邮件的副本(避免修改原对象),然后根据MIME结构添加文本附件:

public static MimeMessage AddSomeInfoAttachment(MimeMessage message)
{
    // 创建原邮件的副本,防止修改原始对象
    var newMessage = new MimeMessage(message);
    
    // 构造文本附件:设置内容、文件名和附件标识
    var textAttachment = new TextPart("plain")
    {
        Text = "这里替换为你要添加的字符串内容",
        ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
        FileName = "附加信息.txt"
    };
    
    // 处理邮件体结构
    if (newMessage.Body is Multipart multipart)
    {
        // 原邮件已是多部分结构,直接追加附件
        multipart.Add(textAttachment);
    }
    else
    {
        // 原邮件为单一内容,包装为MultipartMixed结构
        var mixedMultipart = new MultipartMixed();
        mixedMultipart.Add(newMessage.Body);
        mixedMultipart.Add(textAttachment);
        newMessage.Body = mixedMultipart;
    }
    
    return newMessage;
}

补充说明

  • 如果不需要保留原邮件对象,可以直接修改传入的message,跳过创建副本的步骤
  • 设置ContentDisposition = ContentDisposition.Attachment是为了让邮件客户端将其识别为附件(而非内嵌内容)
  • 若需添加HTML格式的文本附件,只需将TextPart("plain")替换为TextPart("html")即可

内容的提问来源于stack exchange,提问作者Yanko Hernández Alvarez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:20:48