ovh 共享主机默认禁止连接外部 smtp(如 gmail),必须改用 ovh 官方 smtp 服务(ssl0.ovh.net:465)并启用 ssl 认证,否则将报“smtp connect() failed”错误。
在本地开发环境(如 XAMPP)中,PHPMailer 直连 smtp.gmail.com 通常能成功,是因为本地网络未限制出站 SMTP 连接,且 Gmail 的 OAuth 或应用专用密码机制可被正常调用。但 OVH 的共享主机(如 OVHcloud Web Hosting)出于安全与反垃圾邮件策略,明确屏蔽了对第三方 SMTP 服务器(包括 Gmail、Outlook、Yahoo 等)的 25/465/587 端口外连。因此,即使代码逻辑完全正确,也会在 $mail->send() 阶段抛出 SMTP connect() failed 错误,并指向 PHPMailer 官方排错文档。
解决方法是切换为 OVH 提供的内置 SMTP 服务。OVH 要求使用其认证邮箱账户(即您在 OVH 控制台中创建的 @yourdomain.com 邮箱),并通过其加密中继服务器发送邮件。以下是适配 OVH 的标准配置:
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer(true); // 启用异常模式(推荐)
$mail->isSMTP();
$mail->Host = 'ssl0.ovh.net'; // OVH 官方 SMTP 主机(SSL)
$mail->Port = 465; // SSL 端口(不可用 587)
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 明确指定 SMTPS(SSL)
$mail->Username = 'contact@yourdomain.com'; // 必须是已激活的 OVH 邮箱账号
$mail->Password = 'your-ovh-mail-password'; // 对应邮箱的登录密码(非应用密码)
// 发件人与收件人(From 地址必须与 Username 一致或为同域授权别名)
$mail->setFrom('contact@yourdomain.com', 'Your Site Name');
$mail->addAddress('recipient@example.com', 'Recipient Name');
$mail->Subject = 'Test from OVH Server';
$mail->isHTML(true);
$mail->Body = 'TEST EMAIL
Email sent successfully via OVH SMTP.
';
try {
$mail->send();
e
cho '✅ Email sent!';
} catch (Exception $e) {
echo "❌ Mailer Error: {$mail->ErrorInfo}";
}⚠️ 关键注意事项:
综上,这不是 PHPMailer 配置错误,而是托管环境策略限制。切换至 OVH 官方 SMTP 并严格遵循其认证要求,即可稳定发送邮件。