PHPMailer在本地正常运行但在OVH服务器上无法使用问题求助
我知道这个问题已经被多次提及,但我还没找到适配我自身情况的解决方案。
我的代码在Windows系统的XAMPP本地服务器上可以完美运行,但部署到OVH服务器后就出现了SMTP connect() failed错误。
以下是我的代码:
require 'vendor/autoload.php'; use PHPMailer\PHPMailer\PHPMailer; $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'myEmailAddress@gmail.com'; $mail->Password = 'myPass'; $mail->Port = 587; $mail->setFrom('myEmailAddress@gmail.com', 'Name Surname'); $mail->addAddress('myFriend@gmail.com', 'My Friend Mark'); $mail->Subject = 'Test'; $mail->isHTML(true); $body = "<h1> TEST EMAIL </h1> <p> MY EMAIL IS AWESOME </p>"; $mail->Body = $body; if($mail->send()){ echo "SENT!"; }else{ echo "Error ".$mail->ErrorInfo; }
针对性排查与解决方案:
我碰到过不少用户在OVH服务器上部署PHPMailer时遇到这类连接失败问题,结合OVH的环境特性,给你几个具体的排查方向:
检查OVH的端口限制:OVH默认可能会封锁587端口(或其他SMTP端口),你可以先尝试切换到465端口(SSL加密),修改代码如下:
$mail->Port = 465; $mail->SMTPSecure = 'ssl';如果还是不行,直接联系OVH客服确认他们是否开放了SMTP相关端口。
替换Gmail的登录密码为应用专用密码:Google现在对普通SMTP登录限制很严,如果你没开启两步验证,大概率会被拒绝。先开启Google账号的两步验证,然后创建一个应用专用密码,把代码里的
myPass替换成这个专用密码。确认服务器的OpenSSL扩展是否启用:PHPMailer建立加密SMTP连接必须依赖OpenSSL扩展。你可以在OVH服务器上创建一个
phpinfo.php文件,内容为<?php phpinfo(); ?>,访问后搜索“OpenSSL”,如果显示未启用,联系主机商开启或者自己修改php.ini配置。检查OVH防火墙规则:OVH服务器自带的硬件防火墙可能阻止了出站的SMTP请求。登录你的OVH控制面板,找到防火墙设置,确保允许向
smtp.gmail.com的587或465端口发起出站连接。开启调试模式获取详细日志:在代码里添加一行
$mail->SMTPDebug = 2;,这样会输出完整的SMTP连接过程日志,根据日志里的具体错误信息(比如DNS解析失败、SSL握手错误、认证被拒),就能精准定位问题了。
内容的提问来源于stack exchange,提问作者Giuseppe Faraci

