You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无自定义域名Heroku应用用Gmail+PHPMailer发信被标垃圾邮件如何解决

问题排查与解决方案

首先解答你提到的两个疑问:

  1. $mail->Host = 'smtp.gmail.com' 不是问题诱因:你通过Gmail官方SMTP通道发信,邮件实际由Gmail服务器发出,不是Heroku应用服务器直接发信,所以不存在发件服务器和域名不匹配的基础问题。
  2. 你对SPF/DKIM的判断是正确的:走Gmail SMTP发信时,SPF、DKIM校验由Gmail官方完成,gmail.com的相关DNS配置已经是生效状态,不需要你额外操作,这块不会导致邮件进垃圾文件夹。

可落地的优化步骤

1. 先修复PHPMailer配置错误

你当前的代码里存在重复的SMTPSecure配置,后赋值的字符串'ssl'会覆盖前面的常量定义,虽然高版本PHPMailer兼容这种写法,但建议删除冗余行,规范配置:

$mail->isSMTP();                                            
$mail->Host       = 'smtp.gmail.com';                    
$mail->SMTPAuth   = true;                              
$mail->Username   = 'mywebsite@gmail.com';                    
$mail->Password   = '你的应用专用密码';                              
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;        
$mail->Port       = 465;
// 额外补充缺失的发件人配置
$mail->setFrom('mywebsite@gmail.com', '你的站点全称');

注意:现在Google已经默认关闭普通账户的「低安全性应用访问」权限,你不能直接填Gmail登录密码作为SMTP密码,必须先给Gmail账号开启两步验证,然后生成应用专用密码,填入上面的Password字段,否则Gmail会判定你的发信行为异常,直接标记为垃圾邮件。

2. 优化邮件内容降低垃圾评分

  • 邮件标题和内容避免出现「免费」「中奖」「返利」等敏感营销词汇,内容要和站点功能强相关
  • 正文里明确标注邮件触发来源,比如添加一行「本邮件由 mywebsite.herokuapp.com 自动发送,是您主动提交操作触发的通知」
  • 不要发送只有短链接、无正文文本的邮件,测试阶段不要重复给同一个收件人发送内容高度相似的测试邮件
  • 如果是用户触发类邮件,建议添加「取消订阅」或者「停止接收此类通知」的入口

3. 更稳定的替代方案

如果调整Gmail配置后还是频繁出现进垃圾的问题,直接使用Heroku官方的邮件类插件即可,不需要自定义域名即可配置:
推荐使用SendGrid的免费层,单天免费发信额度100封,足够小流量站点使用,SendGrid的发信IP信誉远高于个人Gmail账户,默认就有很低的垃圾邮件命中概率。


内容的提问来源于stack exchange,提问作者yem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:09:01