
本地测试正常的 phpmailer 代码在 ovh 共享主机上失败,主因是 ovh 禁止外发 smtp 连接(如 gmail),必须改用其官方 smtp 服务(ssl0.ovh.net:465)并启用 ssl 认证。
OVH 的共享主机(如 OVHcloud Web Hosting)出于安全与反垃圾邮件策略,默认屏蔽所有对外 SMTP 端口的出站连接(包括 Gmail 的 587/465、outlook 的 587 等)。这意味着即使你的 phpMailer 本地运行无误,部署到 OVH 后调用 smtp.gmail.com 会直接触发 SMTP connect() failed 错误——这不是代码缺陷,而是服务器策略限制。
✅ 正确解法:使用 OVH 官方 SMTP 服务
OVH 为每个已验证域名邮箱提供免费 SMTP 中继服务,无需额外配置 dns,但需满足两个前提:
- 已在 OVH 控制台成功创建并激活邮箱账户(如 contact@yourdomain.com);
- 使用该邮箱的完整地址作为 Username,且密码为该邮箱在 OVH 设置的登录密码(非应用专用密码)。
以下是适配 OVH 主机的完整 PHPMailer 配置示例:
require 'vendor/autoload.php'; use PHPMailerPHPMailerPHPMailer; $mail = new PHPMailer(); $mail->isSMTP(); $mail->Host = 'ssl0.ovh.net'; // OVH 官方 SMTP 服务器(SSL) $mail->Port = 465; // 必须使用 465(SSL 模式) $mail->SMTPAuth = true; $mail->Username = 'contact@yourdomain.com'; // 替换为你的 OVH 邮箱 $mail->Password = 'your_ovh_mail_password'; // OVH 邮箱登录密码 $mail->SMTPSecure = 'ssl'; // 强制 SSL 加密(不可省略) // 发件人与收件人(From 地址必须与 Username 一致或为同域名下已验证邮箱) $mail->setFrom('contact@yourdomain.com', 'Your Site Name'); $mail->addAddress('recipient@example.com', 'Recipient Name'); $mail->Subject = 'Test from OVH Hosting'; $mail->isHTML(true); $mail->Body = 'TEST EMAIL
Email sent successfully via OVH SMTP.
'; if ($mail->send()) { echo "✅ Email sent!"; } else { echo "❌ Error: " . htmlspecialchars($mail->ErrorInfo); }
⚠️ 关键注意事项:
立即学习“PHP免费学习笔记(深入)”;
- 域名一致性:setFrom() 的邮箱地址必须属于你在 OVH 托管的域名,且已在 OVH 邮箱管理中启用;否则将被拒绝中继。
- 端口与加密严格匹配:Port=465 必须搭配 SMTPSecure=’ssl’;若误用 tls 或 Port=587,连接将失败。
- 密码非 app Password:OVH 邮箱不支持 google 风格的“应用专用密码”,请直接使用邮箱控制台设置的原始密码。
- 调试建议:启用详细错误日志前,先确认 $mail->SMTPDebug = 2;(开发阶段),但上线后务必关闭以避免敏感信息泄露。
总结:OVH 环境下发送邮件的核心原则是「就地取材」——放弃外部 SMTP,转而信任并配置其内置邮件中继服务。这不仅符合平台规范,还能显著提升投递成功率与送达率。