GoDaddy托管PHP站点无法发送邮件求助
解决GoDaddy托管PHP站点无法发送邮件的问题
结合你说的情况——3年前邮件发送完全正常、去年突然失效,而且Office365和Gmail都收不到,大概率是GoDaddy的邮件发送规则调整,或者你用的原生mail()函数不再适配他们的环境了。我给你几个针对性的排查和解决方向:
1. 先搞清楚GoDaddy的邮件发送限制
GoDaddy对共享主机上的PHP邮件发送卡得很严,几个关键限制要注意:
- 共享主机默认屏蔽25端口,必须改用587或465端口
- 不能直接用原生
mail()裸发,必须走GoDaddy自己的SMTP服务器 - 发件人地址必须是你在GoDaddy上绑定的域名邮箱,不能随便填外部邮箱
2. 替换原生mail()为SMTP发送方案
现在GoDaddy共享主机上的原生mail()基本没法正常用了,建议改用PHPMailer这类成熟库通过SMTP发送,给你个现成的示例代码:
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; // 引入PHPMailer的自动加载文件(根据你的安装路径调整) require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { // 配置GoDaddy专属SMTP参数 $mail->SMTPDebug = SMTP::DEBUG_OFF; // 调试时可改成DEBUG_SERVER看详细日志 $mail->isSMTP(); $mail->Host = 'smtpout.secureserver.net'; $mail->SMTPAuth = true; $mail->Username = 'your-valid-email@your-domain.com'; // 必须是GoDaddy绑定的域名邮箱 $mail->Password = 'your-email-password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; // 设置发件人、收件人 $mail->setFrom('your-valid-email@your-domain.com', '你的站点名称'); $mail->addAddress('target@office365.com'); // 目标收件邮箱 $mail->addReplyTo($_REQUEST['email'], '用户名称'); // 用户填写的回复邮箱 // 配置邮件内容 $mail->isHTML(true); $mail->Subject = '来自站点的用户消息'; $mail->Body = "用户邮箱:{$_REQUEST['email']}<br>消息内容:{$_REQUEST['message']}"; $mail->AltBody = "用户邮箱:{$_REQUEST['email']}\n消息内容:{$_REQUEST['message']}"; $mail->send(); echo '邮件发送成功'; } catch (Exception $e) { echo "发送失败:{$mail->ErrorInfo}"; }
3. 配置域名的SPF和DKIM记录
Office365和Gmail的反垃圾系统会严格校验邮件来源,你需要给域名添加正确的记录:
- SPF记录:新增一条TXT记录,内容为
v=spf1 include:secureserver.net ~all - DKIM记录:登录GoDaddy域名管理后台,找到DKIM设置,启用后生成对应的TXT记录并添加
4. 查看GoDaddy的邮件日志定位问题
登录GoDaddy主机管理面板,找到「邮件日志」(一般在邮件或主机日志板块),里面会显示发送失败的具体原因——比如是不是认证失败、被收件方拦截,这些日志能帮你快速锁定问题。
最后提醒一句:别把用户提交的邮箱当发件人,必须用自己的域名邮箱当发件人,用户邮箱放在回复地址里就行,不然大概率会被反垃圾系统直接拦截。
内容的提问来源于stack exchange,提问作者Joshua Ohana
相关产品推荐
相关产品推荐

