在BlueHost VPS使用PHPMailer+Gmail SMTP时无法连接SMTP主机
解决BlueHost VPS上PHPMailer连接Gmail SMTP失败的问题
先修正代码中的核心配置错误
你的代码存在端口与加密方式不匹配的问题:
- 端口
587对应STARTTLS加密,需使用PHPMailer::ENCRYPTION_STARTTLS,而非PHPMailer::ENCRYPTION_SMTPS(该加密方式对应端口465)。
修正后的核心配置代码:
//Server settings $mail->SMTPDebug = SMTP::DEBUG_SERVER; //保留调试输出,方便后续排查 $mail->SMTPAuth = true; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //匹配587端口的加密规则 $mail->Host = "smtp.gmail.com"; $mail->Port = 587; $mail->Username = 'me@gmail.com'; $mail->Password = '***app password***'; //确保此应用专用密码为两步验证开启后生成的有效密码
若改用465端口,对应配置调整为:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465;
排查BlueHost VPS的环境限制
- 出站端口权限:BlueHost部分VPS可能限制出站SMTP连接,虽然587、465端口通常开放,但若仍无法连接,需联系BlueHost客服确认是否允许访问
smtp.gmail.com的对应端口。 - PHP扩展检查:确保服务器PHP已启用
openssl扩展(TLS加密依赖该扩展)。可创建phpinfo.php文件查看状态:
<?php phpinfo(); ?>
访问该文件后搜索openssl,确认OpenSSL support显示为enabled。
- 证书链问题:部分VPS根证书链不全,导致无法验证Gmail的SSL证书。可临时添加以下配置跳过验证(仅作临时排查用,长期建议修复服务器证书链):
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
额外验证项
- 确认Google账户已开启两步验证,应用专用密码是在两步验证启用后生成的(未开启两步验证无法生成有效应用专用密码)。
- 检查服务器防火墙/安全组是否允许出站连接到
smtp.gmail.com的587或465端口。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

