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

使用msgraph-sdk-php发送邮件被退回,需Azure配置排查?

问题原因分析

退信错误550 5.7.708 Service unavailable. Access denied, traffic not accepted from this IP的核心原因是:

  • 你使用**客户端凭据(client_credentials)**模式调用Graph API发送邮件时,邮件从Azure数据中心的共享IP地址发出,这类IP易被收件方邮件服务商(如Gmail)判定为低信誉IP,触发拒收。
  • 手动通过Outlook发送时,邮件从微软官方高信誉邮件发送IP池发出,因此能正常送达。
解决步骤(Azure及域名配置)

要解决该问题,需完成以下关键配置:

1. 配置域名SPF记录

确保发件域名配置正确的SPF记录,将微软发送服务纳入授权范围:

  • 若使用Office 365/Exchange Online,SPF记录需包含include:spf.protection.outlook.com
  • 最终SPF记录示例:v=spf1 include:spf.protection.outlook.com -all

2. 启用并配置DKIM签名

在Exchange Admin Center中为域名启用DKIM签名,确保邮件身份可验证:

  • 进入Exchange Admin Center → 邮件流 → DKIM
  • 选择对应域名,启用DKIM签名,生成所需CNAME类型DNS记录并添加到域名服务商处。

3. 配置DMARC记录

添加DMARC记录到域名DNS,指导收件方处理未通过验证的邮件:

  • 基础DMARC记录示例:v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; sp=none; adkim=r; aspf=r
  • 后续可逐步将p值调整为quarantine或reject,提升邮件安全性。

4. 使用已验证的发件人域名

确保发送邮件的发件人邮箱属于已在Azure/Office 365中验证过的域名,未验证域名更易被拒收。

5. 切换认证模式(可选)

若上述配置后仍有问题,可尝试切换到**授权码(authorization code)**模式认证。该模式下邮件从与手动发送相同的高信誉IP池发出,更不易被拒收,代码层面需调整token获取逻辑为用户授权流程。

额外检查点
  • 确认Azure AD应用已被授予Mail.Send应用权限(客户端凭据模式下),且已获得管理员同意。
  • 检查邮件内容是否包含垃圾邮件特征关键词或异常格式,避免触发内容过滤机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:03:14