
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();
echo '✅ Email sent!';
} catch (Exception $e) {
echo "❌ Mailer Error: {$mail->ErrorInfo}";
}⚠️ 关键注意事项:
立即学习“PHP免费学习笔记(深入)”;
- 域名邮箱必须提前在 OVH 控制台(OVHcloud Manager → Web → Email)中创建并激活,不能直接使用 Gmail 账号;
- Username 和 setFrom() 的邮箱地址必须属于同一域名,且该域名已正确绑定至您的 OVH 主机;
- 不要使用 SMTPSecure = 'tls' 或端口 587 — OVH 的 ssl0.ovh.net 仅支持 SSL(即 SMTPS)协议;
- 若仍失败,请检查 OVH 邮箱账户是否启用了“IMAP/SMTP 访问”,并在控制台确认无登录失败锁定;
- 共享主机环境下不支持 mail() 函数直发,也无法绕过 OVH SMTP 使用 sendmail 或自建 relay。
综上,这不是 PHPMailer 配置错误,而是托管环境策略限制。切换至 OVH 官方 SMTP 并严格遵循其认证要求,即可稳定发送邮件。











