PHP+GoDaddy站点配置Office 365邮件发送失败求助
Office 365替换GoDaddy邮件后PHP发件故障排查指南
一、先获取错误提示信息
要定位问题,必须先拿到具体错误日志:
- 在PHP代码开头添加以下代码,强制输出运行时错误:
如果用PHPMailer类发件,开启SMTP调试模式获取交互日志:error_reporting(E_ALL); ini_set('display_errors', 1);$mail->SMTPDebug = 2; // 输出完整SMTP对话过程 - 登录GoDaddy主机后台,找到「错误日志」面板,查看PHP运行时的报错记录,里面会明确标注邮件发送失败的具体原因(比如认证失败、端口被拦截、服务器限制等)。
二、核心配置项核对(Office 365 vs GoDaddy)
原GoDaddy邮件的SMTP参数和Office 365完全不兼容,必须逐一修正:
- SMTP服务器:必须填
smtp.office365.com - 端口:固定用587(TLS加密),不要用465(Office 365对465支持有限)
- 加密方式:启用TLS(注意是连接后启用TLS,不是SSL)
- 认证要求:必须开启SMTP认证,使用
info@mywebsite.com的Office 365账号密码;如果账号开了MFA,要改用应用专用密码 - 发件人限制:发件人地址必须和认证的Office 365邮箱一致,GoDaddy会拦截伪造发件人的请求
三、GoDaddy主机的特殊限制排查
GoDaddy共享主机默认会限制外部SMTP连接:
- 联系GoDaddy客服,确认是否允许主机连接
smtp.office365.com的587端口 - 若为共享主机,部分场景下只能使用GoDaddy自带邮件服务,或者升级到VPS/独立主机解除限制
四、Office 365发件示例代码(PHPMailer)
如果之前用原生mail()函数,建议换成PHPMailer提升兼容性,以下是可用配置:
require 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->SMTPAuth = true; $mail->Username = 'info@mywebsite.com'; $mail->Password = '你的Office365密码/应用专用密码'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('info@mywebsite.com', '新会员申请'); $mail->addAddress('info@mywebsite.com'); $mail->Subject = '收到新会员申请'; $mail->Body = '会员申请详情...'; if(!$mail->send()) { echo '发送失败: ' . $mail->ErrorInfo; } else { echo '发送成功'; }
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

