部署在GoDaddy服务器的PHPMailer发信脚本触发504错误求助
解决GoDaddy服务器上PHPMailer发信504超时问题
移除重复文件引入
已经通过vendor/autoload.php加载了PHPMailer的全部依赖,无需再单独引入PHPMailer.php、SMTP.php、Exception.php,重复加载会引发代码冲突或冗余错误。删除以下三行代码:include('PHPMailer.php'); include("SMTP.php"); include('Exception.php');添加异常捕获逻辑
当前代码未处理PHPMailer的异常,发送出错时会直接终止脚本,导致服务器超时返回504。用try-catch包裹发送流程,同时输出错误信息便于排查:try { $mail = new PHPMailer(true); // 原SMTP配置代码... $mail->send(); echo '<script type="text/javascript"> window.onload = function () { alert("Your email was sent!!!"); } </script>'; } catch (Exception $e) { // 调试阶段输出错误,上线后可替换为友好提示 echo "邮件发送失败: {$mail->ErrorInfo}"; }统一发件地址与SMTP用户名
GoDaddy要求发件人地址(setFrom)必须和SMTP认证用户名(Username)一致,否则会被拦截。修改setFrom为你的SMTP用户名对应邮箱:$mail->setFrom('email@mail.com'); // 与$mail->Username保持相同增加超时配置
因网络延迟导致的连接超时是504错误的常见原因,添加超时参数延长等待时间:$mail->Timeout = 30; // 连接超时时间(秒) $mail->SMTPTimeout = 30; // SMTP操作超时时间(秒)验证GoDaddy SMTP参数
确认GoDaddy的SMTP配置是否匹配:- Host:部分主机可能要求使用
localhost替代smtpout.secureserver.net,可尝试切换测试 - Port:若用
ENCRYPTION_SMTPS加密方式,将端口改为465 - SMTPSecure:对应端口调整加密类型,465端口用
PHPMailer::ENCRYPTION_SMTPS,587端口保留ENCRYPTION_STARTTLS
- Host:部分主机可能要求使用
检查GoDaddy邮件限制
GoDaddy对外部SMTP发送有严格限制,若上述配置仍无效,可尝试使用GoDaddy内置的mail()函数替代SMTP方式,或联系客服确认主机是否允许外部SMTP连接。
内容的提问来源于stack exchange,提问作者Deandre Archer
相关产品推荐
相关产品推荐

