使用Microsoft Graph SDK发送草稿邮件时遇ErrorInvalidRecipients错误
解决Microsoft Graph SDK 5.13.0发送邮件时的ErrorInvalidRecipients错误
问题原因
你创建草稿后直接将返回的draftMessage传入SendMailPostRequestBody发送,而Graph API返回的草稿对象中,收件人字段(如ToRecipients)未被完整保留或序列化,导致发送时系统识别不到有效收件人。
解决方案
不要通过SendMail接口发送草稿,直接调用草稿邮件的Send端点,复用草稿中已有的所有信息(包括收件人):
修改后的代码
var graphMessage = new Message { Subject = "Test", Body = new ItemBody { ContentType = BodyType.Text, Content = "Test" }, ToRecipients = new List<Recipient> { new Recipient { EmailAddress = new EmailAddress { Address = "***@***.com" } } } }; // 创建草稿 var draftMessage = await client.Users["no-reply@***.com"].Messages.PostAsync(graphMessage); // 此处添加大附件到草稿(示例) // var largeAttachment = new FileAttachment { /* 附件配置 */ }; // await client.Users["no-reply@***.com"].Messages[draftMessage.Id].Attachments.PostAsync(largeAttachment); // 直接发送草稿,无需重新构造Message对象 await client.Users["no-reply@***.com"].Messages[draftMessage.Id].Send.PostAsync();
补充说明
如果坚持使用SendMail方法,需确保传入的Message对象包含完整的收件人信息,不能直接复用Graph返回的草稿对象。但针对大附件场景,直接发送草稿是更贴合Graph API最佳实践的方式。
内容的提问来源于stack exchange,提问作者rdadkins
相关产品推荐
相关产品推荐

