服务器迁移至GoDaddy后PHP Mailer出现SMTP连接错误求助
PHPMailer迁移至GoDaddy后无法连接SMTP的解决办法
问题背景
Media Temple服务器被收购迁移到GoDaddy后,PHPMailer无法正常运行,不清楚需更新哪些配置,仅找到多年前的相关讨论帖。
报错信息
SMTP错误:无法连接到SMTP主机。邮件发送错误(mail@domain.com) SMTP错误:无法连接到SMTP主机。SMTP服务器错误:未连接时调用了RSET
相关代码
$mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->SMTPDebug = 4; $mail->isSMTP(); $mail->Host = 'domain.com.'; //$mail->Host = 'localhost'; $mail->SMTPAuth = true; $mail->SMTPKeepAlive = true; //SMTP连接不会在每次发送邮件后关闭,减少SMTP开销 $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->Username = 'user@domain.com'; $mail->Password = 'password'; $mail->setFrom('user@domain.com', 'user@domain.com'); $mail->addReplyTo('user@domain.com', 'user@domain.com');
核心修复步骤
- 替换SMTP主机地址:GoDaddy共享主机的官方SMTP服务器是
smtpout.secureserver.net,不要使用自己的域名(原代码中domain.com.末尾多了个点,本身也会导致DNS解析失败)。 - 确认端口与加密匹配:
- 用465端口时,保持
SMTPSecure = PHPMailer::ENCRYPTION_SMTPS - 用587端口时,改为
SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS
- 用465端口时,保持
- 验证认证凭据:用户名必须是完整的GoDaddy邮箱地址,密码如果开启了两步验证,需要使用应用专用密码,而非登录密码。
- 清理无效配置:原代码中重复设置
SMTPDebug,保留$mail->SMTPDebug = 4;即可,方便排查后续问题。
调整后的示例代码
$mail->SMTPDebug = 4; $mail->isSMTP(); $mail->Host = 'smtpout.secureserver.net'; $mail->SMTPAuth = true; $mail->SMTPKeepAlive = true; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->Username = 'user@domain.com'; $mail->Password = '你的GoDaddy邮箱密码/应用专用密码'; $mail->setFrom('user@domain.com', '自定义显示名称'); $mail->addReplyTo('user@domain.com', '自定义显示名称');
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

