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

能否使用MailKit结合Azure上的Microsoft Graph发送邮件

关于MailKit结合Microsoft Graph发送邮件的解决方案

核心结论

不能直接用MailKit的SMTP发送方法对接Microsoft Graph,必须将MailKit构建的邮件转换为Microsoft Graph API要求的格式后,通过PostAsync调用Graph接口发送。

原因说明

MailKit是基于SMTP协议的邮件客户端工具,而Microsoft Graph是RESTful API服务,二者的通信机制完全不同,MailKit本身并没有内置直接调用Microsoft Graph的方法,所以无法直接用MailKit的发送逻辑对接Graph。

具体实现步骤

  1. 用MailKit构建邮件
    正常使用MailKit的MimeMessage类构建包含主题、收件人、正文、附件的邮件内容,示例代码:

    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("发件人", "sender@example.com"));
    message.To.Add(new MailboxAddress("收件人", "recipient@example.com"));
    message.Subject = "测试邮件";
    message.Body = new TextPart("html") { Text = "<p>这是用MailKit构建的邮件内容</p>" };
    
  2. 将MimeMessage转换为Graph兼容格式
    MailKit的MimeMessage可以导出为RFC 822标准的字节流,再Base64编码后,作为Microsoft Graph发送邮件API的contentBytes参数:

    using var stream = new MemoryStream();
    message.WriteTo(stream);
    var base64Content = Convert.ToBase64String(stream.ToArray());
    
  3. 调用Microsoft Graph API发送
    构造符合Graph要求的请求体,包含message对象(其中contentBytes为上面的Base64字符串),然后通过PostAsync发送到Graph的sendMail接口:

    var graphRequest = new
    {
        message = new
        {
            subject = message.Subject,
            contentBytes = base64Content
        },
        saveToSentItems = true
    };
    
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "你的Graph令牌");
    var response = await httpClient.PostAsync(
        "https://graph.microsoft.com/v1.0/me/sendMail",
        new StringContent(JsonSerializer.Serialize(graphRequest), Encoding.UTF8, "application/json")
    );
    response.EnsureSuccessStatusCode();
    

补充说明

如果希望简化流程,也可以结合Microsoft Graph SDK来发送,但核心逻辑还是需要将MailKit构建的MimeMessage转换为Base64编码的内容字节流,再传入SDK的邮件发送方法中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:22