PHPMailer使用Office 365 SMTP服务出现504认证类型不识别故障
Office365 PHPMailer 504认证类型错误解决方案
核心故障原因
你手动将$email->SMTPSecure设置为空,关闭了加密传输,Office365 587端口要求必须使用STARTTLS加密后再提交认证信息,明文提交的认证请求会被服务器识别为非法类型,返回504 5.7.4 Unrecognized authentication type错误。在线SMTP测试工具会自动识别服务器返回的250-STARTTLS标识主动触发加密流程,因此可以正常发送。
修复步骤
- 修正加密配置,删除原来的空值配置,替换为以下内容:
// 启用STARTTLS加密,适配Office365要求 $email->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 开启自动TLS协商 $email->SMTPAutoTLS = true;
如果使用的是低版本PHPMailer不支持ENCRYPTION_STARTTLS常量,直接写字符串即可:
$email->SMTPSecure = 'tls';
- 显式指定认证类型,避免自动协商出错:
// Office365支持LOGIN认证方式 $email->AuthType = 'LOGIN';
- 校验凭据配置
- 用户名必须填写完整的Office365邮箱地址,不能仅填写前缀
- 如果账号开启了多因素认证(MFA),必须使用应用密码替代普通登录密码
- 可选:服务器证书校验异常临时修复(仅用于测试,生产环境请更新系统根证书)
如果修改上述配置后仍报错,可临时关闭SSL校验排查是否为根证书缺失问题:
$email->SMTPOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ] ];
- 确认PHP已启用openssl扩展,可通过
phpinfo()查看扩展状态
内容的提问来源于stack exchange,提问作者charlie
相关产品推荐
相关产品推荐

