CodeIgniter PHP发信Gmail正常但雅虎邮箱收不到问题求助
故障原因
你看到的「发送成功」只是代表Gmail SMTP服务器接受了你的发信请求,雅虎收件服务器会基于自身反垃圾规则校验邮件,校验不通过就会直接拒收或者归入非收件箱文件夹,不会返回给发件SMTP服务器错误,所以你的代码判断返回成功。
解决方案
- 配置正确的DNS解析记录
你用Gmail SMTP代发thing@some.com后缀的邮件,必须在some.com的DNS解析中添加SPF、DKIM记录,雅虎对发件域身份校验的严格程度远高于Gmail,缺少记录会直接触发拦截:
SPF记录值示例:v=spf1 include:_spf.google.com ~all
同时需要在Gmail后台配置DKIM签名,对应添加DKIM解析记录到域名DNS。 - 修改邮件编码配置
你当前配置的字符集是iso-8859-1,雅虎对非UTF-8编码的邮件拦截概率极高,把配置中的charset参数改为utf-8即可:'charset' => 'utf-8', - 统一发件人地址
确保$from_email参数值和你SMTP_USER对应的Gmail地址一致,或者是该Gmail账号后台已验证通过的发件别名,雅虎会校验发件人地址和发件服务器身份的匹配度,伪造发件人会被直接拒收。 - 排查邮件内容
测试阶段先发送无链接、无营销词汇的纯文本内容,避免被雅虎的内容反垃圾规则命中,同时检查收件人雅虎账号的垃圾箱、推广邮件、垃圾邮件文件夹,确认邮件是否被归类到非收件箱目录。 - 查看具体拦截原因
取消代码中//echo $CI->email->print_debugger();的注释,输出发信日志,同时登录发信用的Gmail账号查看已发送文件夹和退信通知,雅虎拒收时会返回具体的错误码和原因,可根据原因针对性调整。
内容的提问来源于stack exchange,提问作者Sikander Ahmad
相关产品推荐
相关产品推荐

