WordPress发不出去通知邮件的解决方案

TL;DR

wordpress国内服务器访问不到发件服务器,所以经过综合考虑之后,选择采用第三方插件和第三方邮箱通过SMTP发送邮件。


起因

我转移到wordpress之后,之前搭建在纽约的服务器上,邮件是没什么问题的。评论和被评论都会收到邮件通知。但是正常转移到杭州的服务器上之后发现收不到任何邮件了,包括不限于修改密码,邮箱,用户操作,评论和被评论的通知邮件。

分析

❌期初我以为是因为服务器商封禁了邮件发送端口。但是我在防火墙打开了SMTP端口(25,465 ,587)的出站之后发现还是不行。

❌那就要考虑邮件是不是被服务商拦截的,询问客服之后告知不是,同时被告知如果发送垃圾邮件会被封禁。

✔️最后我检查之前的邮件,发现是来自wp.com的邮件。我并未安装jetpack,但是邮件依旧不是来自我的站点而是通过wordpress的服务器发送(猜测是需要访问一下WP的接口而非使用PHP的mail()方法发送的邮件)。

尝试解决

问题明确之后就很容易解决了。下面是几个直接方案:

  1. 通过一些方案访问WP.COM
    • 代理
    • HOSTS
    • 更换服务器
    • 修改DNS(或许可行?)
    • 利用wordpress的第三方插件访问WP网络
  2. 修改发件邮箱
    • 修改mail()方法
    • 利用第三方插件

因为我不想改代码了,也不想被警告,经过我1/3秒的思考,我觉得利用第三方插件,即使他们就是一个SMTP发送邮件的方案却做得又大又重,我似乎没有更多其它选择。

我最后选择了Post SMTP,这是唯一一个SMTP插件,比较流行,看起来没那么重,且貌似不会打扰我的邮件插件。另外不推荐在 VPS 上运行本地 SMTP 服务器(配置复杂,送达率低)。

推荐使用QQ/foxmail邮箱做发件邮箱。所有的插件使用outlook都需要会员,outlook自带的SMTP貌似不可用了。我根据网上的教程设置了SMTP,打开了双重验证,然后在下方寻找应用密码。因为outlook在登录时似乎需要使用应用密码而不是账户密码。但是设置了双重验证,貌似又需要认证,永远提示认证失败。后来查了一下,说是之后会禁用第三方SMTP…奇奇怪怪的东西。另外我也不清楚这个是否会放到corn队列了,并且corn是否会堆积…对WP了解的不多。

所以,用FOXMAIL算啦!开通”POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”之后,或许一个授权码用作登录即可。记得要勾选“SMTP 发信后保存到服务器”!

本身在传家宝上搭WP是为了方便,现在反而产生了更多的不方便。

其他小问题

  • 插件提示存在屏蔽词或者被判断为垃圾内容,如下提示:

The mail may contain inappropriate words or content.

此时你应该在插件中找到发送方式(Mailer Type),修改为PHPMailer

  • 发送失败,提示信息中存在如下字样:

Mail from address must be same as authorization user.

此时你应该在插件中寻找发件地址(From Address)设置,然后修改文SMTP登录账号的邮箱。并且勾选“禁止其他插件/主题修改此内容”选项

5 评论

留下评论

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

  1. 其实可以去注册像mail.sb以及cock.li这样的小电子邮件提供商,这些邮箱通常都有SMTP提供,而且限制也不是很多,如果不是一天要发几百封的话,一般是足够的。