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

如何使用C#为Graph API邮件请求构造符合规范的收件人列表

问题原因

你当前代码直接将字符串列表赋值给toRecipients字段,但Graph API要求该字段是嵌套结构的对象数组:每个数组元素需要包含emailAddress对象,内部再存放实际邮箱地址的address字段,和你传入的纯字符串结构不匹配。

修正后的代码

你可以直接在拆分邮箱字符串时,将每个邮箱地址映射为符合要求的嵌套结构,两种写法可选:

LINQ简洁写法

var emailTo = "test1@acme.com,test2@acme.com";
// 拆分邮箱并直接构造符合Graph API要求的收件人列表
var toRecipientsList = emailTo.Split(',')
    .Select(email => new 
    {
        emailAddress = new 
        {
            address = email.Trim() // 额外加Trim避免邮箱前后带空格导致请求失败
        }
    })
    .ToList();

var emailbody = new
{
    message = new
    {
        subject = "test details",
        body = new
        {
            contentType = "Text",
            content = "The test details content."
        },
        toRecipients = toRecipientsList
    }
};

传统循环写法

如果你不想用LINQ,也可以用你原本的循环逻辑修改:

var emailTo = "test1@acme.com,test2@acme.com";
var toRecipientsList = new List<object>();
foreach (var item in emailTo.Split(','))
{
    toRecipientsList.Add(new 
    {
        emailAddress = new 
        {
            address = item.Trim()
        }
    });
}

// emailbody构造逻辑和上面一致,直接赋值toRecipients = toRecipientsList即可

结构验证

以上代码序列化后生成的toRecipients结构完全匹配Graph API要求:

"toRecipients": [
  {
    "emailAddress": {
      "address": "test1@acme.com"
    }
  },
  {
    "emailAddress": {
      "address": "test2@acme.com"
    }
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:48:02