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

如何使用.NET版Graph SDK V5发送MIMECONTENT?求更优方案

更优方案:直接发送MIME内容(无需解析重构)

Graph API支持直接通过sendMail端点发送MIME格式的邮件,Graph SDK V5也原生支持这种方式——不需要借助MimeKit解析重构邮件内容,直接将.eml文件的字节数组作为MimeContent传入即可,一步完成发送,效率更高且能完整保留邮件原始信息。

代码示例

byte[] emlBytes = File.ReadAllBytes(filepath);

var sendMailRequest = new Microsoft.Graph.Models.SendMailPostRequestBody
{
    Message = new Microsoft.Graph.Models.Message
    {
        MimeContent = new Microsoft.Graph.Models.MimeContent
        {
            ContentType = "message/rfc822",
            Content = Convert.ToBase64String(emlBytes)
        }
    },
    SaveToSentItems = true // 根据业务需求设置是否保存到已发送邮件文件夹
};

// 直接发送邮件,无需创建草稿或拆分操作
await gsc.Users[userinfo.UserPrincipalName].SendMail.PostAsync(sendMailRequest);

方案优势

  • 简化代码与性能优化:省去MimeKit解析邮件的额外开销,减少代码层级与出错概率
  • 一步完成发送:无需分「创建草稿→逐个添加附件→触发发送」多步操作,一次API请求完成全部流程
  • 完整保留原始属性:.eml文件中的抄送、密送、自定义邮件头、特殊格式等信息都会被完整保留,不会因解析重构丢失数据
使用ToPostRequestInformation的自定义请求方式

如果需要更灵活地控制请求细节(比如自定义请求头),可以用ToPostRequestInformation手动构建请求,直接发送原始MIME数据:

byte[] emlBytes = File.ReadAllBytes(filepath);

// 构建基础请求信息
var requestInfo = gsc.Users[userinfo.UserPrincipalName].SendMail.ToPostRequestInformation(new SendMailPostRequestBody());
// 覆盖请求内容类型与原始MIME数据
requestInfo.ContentType = "message/rfc822";
requestInfo.Content = emlBytes;

// 发送自定义请求
await gsc.RequestAdapter.SendAsync(requestInfo, typeof(void));

这种方式仅适合需要高度自定义请求的场景,日常使用中第一种方案更简洁高效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:43:32