通过Microsoft 365 SMTP发邮件如何自定义显示名?附PHP Swift Mailer示例
通用前置检查
先确认对应邮箱账号的SMTP AUTH功能已开启:
- 进入Exchange管理中心对应邮箱账号的编辑页,点击「邮件」-「管理电子邮件应用」
- 确认「经过身份验证的SMTP」选项已勾选,未开启的话先打开再执行后续配置
原因说明
这是微软365的默认安全策略,通过SMTP提交发信时,系统会优先使用邮箱账号在Exchange后台配置的默认显示名,自动覆盖客户端代码中设置的自定义显示名,避免发件人信息被伪造滥用。
解决方案
根据你的使用场景可选择对应方案:
场景1:所有发信固定使用同一个自定义显示名
直接修改邮箱账号的默认显示名即可,操作步骤:
- 登录Exchange管理中心,进入「收件人」-「邮箱」板块
- 找到
example@domain.com对应的账号,进入编辑页面 - 修改「联系人信息」下的「显示名」为你需要的
Some content relevant name - 保存配置后等待10-15分钟生效,后续发信就会使用修改后的显示名
场景2:同一个账号需根据不同邮件使用不同自定义显示名
可二选一执行:
方案A:调整Exchange传输配置(需租户管理员权限)
使用Exchange Online PowerShell执行以下命令,关闭全局SMTP发件人显示名强制覆盖策略:
# 连接Exchange Online Connect-ExchangeOnline -Organization 你的租户域名.onmicrosoft.com # 关闭显示名强制覆盖规则 Set-TransportConfig -UseDisplayNameFromSendAs $false
配置生效后,代码中setFrom设置的自定义显示名即可正常展示。
注意:该配置会影响整个租户的SMTP发信规则,如果企业有严格的邮件安全要求,不建议使用该方案。
方案B:改用Microsoft Graph API发信
相比SMTP协议,Graph API的发信接口对自定义发件人信息的限制更宽松,只要给应用分配了Mail.Send权限,发信请求中的from.name字段填写的自定义名称会直接生效,不会被后台默认值覆盖。
内容的提问来源于stack exchange,提问作者Theo
相关产品推荐
相关产品推荐

