如何使用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
相关产品推荐
相关产品推荐

