某GoDaddy服务器PHPMailer无法运行:SMTP connect()失败求助
GoDaddy服务器PHPMailer无法连接SMTP问题排查与解决
问题描述
同一PHPMailer脚本在本地环境和另一台GoDaddy服务器上正常运行,但在某台GoDaddy服务器上提示SMTP连接失败错误。使用PHPMailer 5.2.27版本,Gmail账号已配置应用密码。
测试脚本
<?php $to = "username@gmail.com"; $subject = "Test Subject"; $message = "Test email message"; require("PHPMailer/PHPMailerAutoload.php"); $mail = new PHPMailer(); $mail->SMTPDebug = 3; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->SMTPOptions = array( "ssl" => array( "verify_peer" => false, "verify_peer_name" => false, "allow_self_signed" => false ) ); $mail->IsHTML(true); $mail->CharSet = "UTF-8"; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->Username = "username@gmail.com"; $mail->Password = "password"; $mail->SetFrom("username@gmail.com", "Website Admin"); $mail->AddAddress($to, "Website Admin"); $mail->Subject = $subject; $mail->Body = "<html><body style='font-family:Arial, Helvetica, sans-serif;'>"; $mail->Body .= "<table>"; $mail->Body .= "<tr><th>Email:</th><td>$to</td></tr>"; $mail->Body .= "<tr><th>Message:</th><td>$message</td></tr>"; $mail->Body .= "</table>"; $mail->Body .= "</body></html>"; $mail->AltBody = "This is the body in plain text for non-HTML mail clients."; $mail->WordWrap = 70; if($mail->Send()) { echo "Mail sent"; } else { echo "Mailer Error: " . $mail->ErrorInfo; } ?>
错误信息
Mailer Error: SMTP connect() failed.
排查与解决步骤
检查GoDaddy服务器的SMTP端口限制
GoDaddy部分服务器会限制对外SMTP端口(如465、587)的访问,强制使用自身SMTP服务。尝试改用GoDaddy官方配置:- Host设为
smtpout.secureserver.net - Port选465(SSL)、80或3535(非SSL)
- 用户名/密码使用GoDaddy主机绑定的邮箱账号
- Host设为
确认PHP环境的openssl扩展状态
运行phpinfo()查看openssl扩展是否启用。若未开启,通过主机控制面板启用,或联系GoDaddy客服协助开启。升级PHPMailer版本
5.2.27版本较陈旧,存在SMTP兼容性Bug。建议升级到最新6.x版本,新版本修复了大量SSL/TLS连接问题,对现代SMTP服务支持更完善。调整SSL验证配置
修改SMTPOptions中allow_self_signed为true,避免服务器证书验证失败导致连接中断:$mail->SMTPOptions = array( "ssl" => array( "verify_peer" => false, "verify_peer_name" => false, "allow_self_signed" => true ) );检查服务器防火墙规则
部分GoDaddy服务器的防火墙会拦截外部SMTP请求,联系技术支持确认是否有出站端口限制,申请开放对smtp.gmail.com的465/587端口访问。尝试TLS加密替代SSL
修改加密方式和端口,部分服务器对TLS兼容性更好:$mail->SMTPSecure = "tls"; $mail->Port = 587;
内容的提问来源于stack exchange,提问作者Sachin
相关产品推荐
相关产品推荐

