使用PHPMailer连接smtp.gmail.com失败:无法连接SMTP主机求助
解决PHPMailer发送Gmail邮件的常见问题
嘿,看你已经搞定了PHPMailer的Composer安装,也开了Gmail的“允许低安全应用”权限,但代码贴到$mail =...就断了。不过根据我帮别人排查过的类似情况,给你整理几个最容易踩的坑和完整的可运行方案:
补全核心配置代码
官方示例里的SMTP配置是关键,给你一份完整的可运行代码,你可以直接替换成自己的信息:<?php // Import PHPMailer classes into the global namespace use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // 加载Composer的自动加载器,注意路径!如果脚本在子目录,要调整路径 require 'vendor/autoload.php'; // 初始化PHPMailer,启用异常处理方便排查错误 $mail = new PHPMailer(true); try { // 服务器配置 $mail->SMTPDebug = 2; // 开启调试模式,能看到详细发送日志,排查问题必备 $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; // Gmail官方SMTP服务器 $mail->SMTPAuth = true; $mail->Username = 'your-gmail@example.com'; // 你的Gmail邮箱地址 $mail->Password = 'your-password'; // 注意:如果开了两步验证,要用应用专用密码 $mail->SMTPSecure = 'tls'; // 加密方式,Gmail推荐tls $mail->Port = 587; // tls对应的端口 // 收件人设置 $mail->setFrom('your-gmail@example.com', '你的名字'); $mail->addAddress('recipient@example.com', '收件人名字'); // 添加收件人 // 邮件内容 $mail->isHTML(true); // 启用HTML格式 $mail->Subject = '测试邮件主题'; $mail->Body = '这是HTML格式的邮件内容,<b>加粗效果</b>'; $mail->AltBody = '这是给不支持HTML的邮件客户端的纯文本内容'; $mail->send(); echo '邮件发送成功!'; } catch (Exception $e) { echo "邮件发送失败,错误信息: {$mail->ErrorInfo}"; }必须注意的几个细节
- 路径检查:
require 'vendor/autoload.php';要确保这个路径正确,如果你的PHP脚本放在子文件夹里,可能需要写成require '../vendor/autoload.php';或者使用绝对路径。 - Gmail权限特殊情况:如果你的Gmail账号开了两步验证,“允许低安全应用”的设置是无效的,必须去Google账号管理页面生成一个应用专用密码,用这个密码代替你的登录密码。
- 调试模式开启:把
SMTPDebug设为2,能看到SMTP服务器的交互日志,比如连接失败、认证错误这些具体问题,帮你快速定位故障。 - 服务器端口限制:有些主机服务商可能封禁了587端口,这时候可以尝试换成465端口,同时把
SMTPSecure改成ssl。
- 路径检查:
内容的提问来源于stack exchange,提问作者user5005768-hd
相关产品推荐
相关产品推荐

