跳到主要内容

ArtinTech Solution

Why WooCommerce Order Emails Weren’t Reaching Gmail

新订单通知邮件没有到达管理员的 Gmail 收件箱(不是进了垃圾邮件,而是根本没到),令人沮丧的是,WordPress 自己的 wp_mail() 函数每次都报告发送成功,这就排除了常见的嫌疑:邮件函数调用出错、插件冲突或服务器宕机。

为什么“显示已发送”不等于“已送达”

wp_mail() 返回 true,只能确认邮件已成功交给服务器本地的邮件传输系统去投递;它对之后发生的事情一无所知,包括接收方邮件服务器(这里是 Gmail)究竟是接收了,还是悄悄丢弃了。

隐藏真正问题的邮件头

真正的原因在邮件头里:WooCommerce 配置的“发件人”地址是一个 @gmail.com 邮箱,而邮件实际上是由主机服务器自己的邮件系统发出的,不是由 Google 发出的。Gmail 的 SPF(Sender Policy Framework)记录只授权 Google 自己的基础设施发送声称来自 @gmail.com 地址的邮件。一封声称来自 Gmail、却从不相关服务器发出的邮件会直接无法通过这项检查,而 Gmail 的反垃圾机制会把冒充其自有地址且 SPF 失败的邮件视为强烈的伪造信号,尤其当收件人也是 Gmail 地址时。

结果:邮件在到达任何收件箱之前就被悄悄丢弃或当作垃圾邮件过滤掉了,这正是它连垃圾邮件箱里都找不到的原因。

一行设置的修复

店铺自己的域名早已有一条有效的 SPF 记录,授权其主机服务商的邮件服务器发信;只是没用上,因为“发件人”地址指向了 Gmail。把 WooCommerce 邮件的“发件人”地址改为发信服务器真正获得授权的域名(orders@[storedomain].com)后,问题立刻解决:一封测试订单邮件在一分钟内就进入了收件箱,无需新插件、无需 SMTP 中继,也无需修改 DNS。

要点总结

  • “函数返回成功”和“邮件已送达”是两回事;诊断邮件送达问题需要检查身份验证,而不只是发送调用。
  • 当邮件并非从 Google 服务器发出时,却用 Gmail 地址作为发件人,几乎必然导致 SPF 失败并被悄悄过滤。
  • 在安装新的 SMTP 插件之前,先检查域名现有的 SPF 记录;授权往往早已存在,只是没有被用上。

相关阅读:网站维护到底包括什么、缓存 TTL 导致的间歇性 403 错误。

在您自己的 WooCommerce 或 WordPress 后台遇到类似限制?和我们聊聊:ArtinTech Solution 正是打造这类定制店铺工具的团队。

Share this article

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注