在XAMPP中使用PHP发送邮件问题:邮件未送达Gmail邮箱
解决从no-reply@{domain}发Gmail未送达的问题
下面是几个必查的方向和实操方法:
1. 先确认邮件去向
直接查看Gmail的垃圾邮件文件夹,很多新域名发送的邮件会被自动归类到这里。如果找到目标邮件,将发件人加入白名单即可。
2. 补全域名邮件验证记录(核心)
Gmail对发件域名的可信度校验严格,必须配置以下DNS记录:
- SPF记录:新增一条TXT类型记录,内容设为
v=spf1 ip4:你的服务器公网IP mx -all,用于告知Gmail你的服务器是该域名的合法发件节点。 - DKIM签名:在hMailServer后台找到DKIM配置项,生成密钥对,将公钥添加到域名的TXT记录中,格式示例:
dkim._domainkey IN TXT "v=DKIM1; k=rsa; p=公钥内容"。 - PTR反向解析:联系服务器提供商,将服务器IP反向解析到
mail.{domain},缺少该记录Gmail大概率会直接拒收邮件。
3. 排查hMailServer发送配置
- 查看SMTP发送日志:打开hMailServer管理后台,进入「日志」→「SMTP日志」,里面会记录每封邮件的发送状态(如连接Gmail服务器被拒、报错信息等),这是最直接的排查线索。
- 更换SMTP端口:多数服务商默认封禁25端口,可在
php.ini中将smtp_port改为587,同时在hMailServer内开启587端口的SMTP服务。 - 检查发送权限:确保hMailServer允许运行PHP的服务器本地IP发送邮件,未将该IP加入黑名单。
4. 优化PHP mail()参数
规范邮件头格式,降低被判定为垃圾邮件的概率:
$headers = [ 'From' => 'John Doe <no-reply@{domain}>', 'Reply-To' => 'no-reply@{domain}', 'X-Mailer' => 'PHP/' . phpversion() ]; mail('johndoe@gmail.com', 'Test Email', 'Hello World', $headers);
5. 验证MX记录有效性
用命令行工具(如nslookup)查询域名MX记录,确认mail.{domain}指向的IP正确,且DNS记录已生效(新记录通常需1-24小时同步)。
内容的提问来源于stack exchange,提问作者Sora Blank
相关产品推荐
相关产品推荐

