PHPMailer SMTP端口必须与SMTPSecure严格匹配:Gmail等推荐tls+587;QQ/163等支持ssl+465;禁用25端口。改端口须同步修正加密协议,否则连接失败。

直接修改 Port 属性即可
PHPMailer 的 SMTP 发信端口由 $mail->Port 属性控制,它必须与所选加密方式(SMTPSecure)严格匹配。改端口不是单独操作,而是和安全协议协同设置的——换端口不换协议,或协议写错,都会导致连接失败。
常见端口与加密方式对应关系
不同邮箱服务商支持的端口和加密组合有明确要求,不能随意混搭:
-
Gmail、Outlook、阿里云邮件推送等主流服务:推荐使用
SMTPSecure = 'tls'+Port = 587 -
QQ 邮箱、163 邮箱、部分旧企业邮箱:可选
SMTPSecure = 'ssl'+Port = 465(注意是隐式 SSL,不是 STARTTLS) - 不建议使用 Port = 25:多数云服务器已屏蔽该端口;即使开放,也常被接收方标记为高风险,送达率低
实际代码中如何设置
在实例化 PHPMailer 后,显式指定端口和加密方式,顺序无关,但必须同时存在:
$mail = new PHPMailer\PHPMailer\PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.qq.com'; $mail->SMTPAuth = true; $mail->Username = 'your@qq.com'; $mail->Password = 'your_authorization_code'; // 注意:用授权码,非登录密码 $mail->SMTPSecure = 'tls'; // 或 'ssl' $mail->Port = 587; // 若上行设为 'ssl',此处必须为 465
如果使用的是 QQ 邮箱且希望走 SSL 模式,则两行要同步改为:
立即学习“PHP免费学习笔记(深入)”;
$mail->SMTPSecure = 'ssl'; $mail->Port = 465;
验证端口是否生效的小技巧
启用调试模式可快速定位连接问题:
- 加上
$mail->SMTPDebug = 2;(输出到屏幕)或3(含更详细日志) - 运行后若看到
Connection: opening to smtp.qq.com:587,说明端口已正确读取 - 若提示
Failed to connect to server,先检查防火墙、网络策略是否放行该端口,再确认加密方式是否匹配



















