TL;DR
wordpress国内服务器访问不到发件服务器,所以经过综合考虑之后,选择采用第三方插件和第三方邮箱通过SMTP发送邮件。
起因
我转移到wordpress之后,之前搭建在纽约的服务器上,邮件是没什么问题的。评论和被评论都会收到邮件通知。但是正常转移到杭州的服务器上之后发现收不到任何邮件了,包括不限于修改密码,邮箱,用户操作,评论和被评论的通知邮件。
分析
❌期初我以为是因为服务器商封禁了邮件发送端口。但是我在防火墙打开了SMTP端口(25,465 ,587)的出站之后发现还是不行。
❌那就要考虑邮件是不是被服务商拦截的,询问客服之后告知不是,同时被告知如果发送垃圾邮件会被封禁。
✔️最后我检查之前的邮件,发现是来自wp.com的邮件。我并未安装jetpack,但是邮件依旧不是来自我的站点而是通过wordpress的服务器发送(猜测是需要访问一下WP的接口而非使用PHP的mail()
方法发送的邮件)。
尝试解决
问题明确之后就很容易解决了。下面是几个直接方案:
- 通过一些方案访问WP.COM
- 代理
- HOSTS
- 更换服务器
- 修改DNS(或许可行?)
- 利用wordpress的第三方插件访问WP网络
- 修改发件邮箱
- 修改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登录账号的邮箱。并且勾选“禁止其他插件/主题修改此内容”选项
Gmail 也从本月起彻底关闭了 SMTP。看来关闭 SMTP 会是大势所趋。
能用 SMTP 的日子且行且珍惜吧。
准确说是传统的 SMTP 已被禁,基于 OAuth 的 SMTP 应该是可行的。
好像是的,在插件后端选择认证方法选择OAuth2.0之后貌似可以使用outlook(我没试)
国内就这样,只能用三方插件实现,或者有些主题自己集成了发邮件的功能
其实可以去注册像mail.sb以及cock.li这样的小电子邮件提供商,这些邮箱通常都有SMTP提供,而且限制也不是很多,如果不是一天要发几百封的话,一般是足够的。