You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHPMailer通过Gmail SMTP发邮件报错排查求助

问题

我用PHP开发了一个联系表单,采用PHPMailer类通过Gmail SMTP发送邮件。该表单使用其他邮箱ID时运行正常,但切换为Gmail SMTP设置后,出现报错:

SMTP Error: Could not connect to SMTP host. and SMTP -> ERROR: Failed to connect to server: Connection refused (111)

以下是我使用的代码:

require 'PHPMailer/class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'venkateshm2280@gmail.com';
$mail->Password = 'mmuxhssfdrqnsowp'; // Use the App Password you generated
$mail->SMTPSecure = 'tls';
$mail->From = $_POST['email'];
$mail->FromName = $_POST['name'];
$mail->AddAddress('venkateshm2280@gmail.com', 'HR');
$mail->WordWrap = 50;
$mail->IsHTML(true);
$mail->AddAttachment($path);
$mail->Subject = 'Application for Programmer Registration';
$mail->Body = $message;
$mail->SMTPDebug = 2; 

请问Gmail SMTP设置是否存在不匹配的地方?

解决建议
  • 检查服务器端口权限:多数服务器会默认限制对外的SMTP端口,先确认主机商是否放行587端口访问smtp.gmail.com。如果不行,换用465端口,同时把$mail->SMTPSecure改成'ssl'试试。
  • 验证应用密码:确保你用的应用密码是正确生成的——Gmail要求必须开启两步验证才能创建应用密码,生成的密码是16位无空格字符,要完整复制使用。
  • 升级PHPMailer版本:你当前使用的是旧版PHPMailer,新版对Gmail的SMTP协议支持更完善,建议替换为最新版本的PHPMailer。
  • 启用PHP openssl扩展:Gmail SMTP依赖openssl扩展,打开php.ini文件,检查extension=openssl是否被注释,若注释则取消并重启服务器。
  • 禁用自动TLS协商:在代码中添加$mail->SMTPAutoTLS = false;,部分环境下自动TLS握手会失败,强制使用手动设置的加密方式。

内容的提问来源于stack exchange,提问作者Venkat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:07:04