使用MSGraph API发送邮件已发出但收件人未接收问题求助
可能的原因及排查方向
- 邮件被收件人邮箱拦截:自动发送的邮件常被反垃圾系统判定为垃圾邮件,直接归入垃圾箱或隔离区。让收件人检查垃圾邮件、广告邮件文件夹,以及邮箱的反垃圾过滤规则。
- 收件人地址有误:代码无报错不代表收件人地址正确,
message里的toRecipients可能存在拼写错误(如域名遗漏、字母错误)或指向无效邮箱。打印message内容,确认收件人地址格式和有效性。 - 邮件内容触发反垃圾规则:邮件包含敏感词、大量外链、疑似广告话术,或主题/内容过于简短,都可能触发拦截。调整邮件主题和内容,避免违规特征。
- 发件人邮箱存在发送限制:调用
users/{from}/sendMail是模拟from用户发件,若该用户邮箱有每日发送量上限、管理员限制外发等配置,会导致邮件无法送达外部收件人。检查该用户的邮箱权限和发送配额。 - 邮件处于待发送队列:网络延迟、微软服务器负载过高可能导致邮件暂存队列,延迟送达。可等待一段时间后再确认收件情况。
- 邮件结构不符合API要求:若
message未正确设置subject、body等核心字段,可能导致邮件被异常处理。确认message结构符合MS Graph规范,示例结构如下:{ message: { subject: "邮件主题", body: { contentType: "Text", // 或Html content: "邮件内容" }, toRecipients: [ { emailAddress: { address: "recipient@example.com" } } ] }, saveToSentItems: true } - 权限范围不足:即使accessToken有效,若缺少
Mail.Send权限(委托或应用权限),或应用权限未获得管理员同意,也可能导致邮件无法正常送达。解码JWT token查看scp字段,确认权限范围是否正确。
内容的提问来源于stack exchange,提问作者Nayeem Mansoori
相关产品推荐
相关产品推荐

