前言

前一段时间查看网站用户的时候发现多出了两个新名字,而这两个ID都不在我的记忆之中,而这正是本次更新的契机。之前网站的注册功能实际上是没有开放的,因为并不会向注册用户的邮箱发送信件,因此也没有设置密码的能力。

为网站配置邮箱发信功能,对我来说不是第一次,大概一年前在搬瓦工的服务器上便有过初次告捷的经验;大约半年前,在我想为阿里云ECS配置同样的功能时,却是铩羽而归,之后这件事便不了了之了。前一段时间wordpress官网下载老是出现问题,而今天我再次尝试时,好像已经修复了。

熟悉的第一步

要开启邮箱服务,首先要做的是开启对应邮箱账号的第三方登录权限,这一步无论是在国外的VPS还是国内的服务器上都是一样的。

以qq邮箱为例,打开qq邮箱,设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,通过手机验证码取得密钥,邮箱方面的工作便告一段落。

安装任意一款SMTP插件,我使用的是WP Mail SMTP,在发件人处填写要使用的发件邮箱,比方说[email protected],发件人名称可以任意填,邮件,程序选择其他SMTP,接下来很重要的一步,SMTP 主机要填写ssl://smtp.qq.com,如果没有ssl://便无法成功发送。加密方式选择无,SMTP用户名就是邮箱账号,填[email protected],密码则填刚刚获得的密钥。

非常规操作

做完以上的工作,点击发信测试,返回是失败的,不用慌,因为阿里云占用了25端口,而又没有开放其他端口,因此需要将SMTP的端口改为465,前往阿里云控制台添加一条安全组规则,开放465端口。

这时顺便还可以新增一条域名解析,配置如下

这时再回到wordpress后台,点击发信测试,已经可以成功收到邮件了。

关于Easy WP SMTP

如果你使用的WP Mail SMTP,那么已经大功告成,可以开始使用了。

但是如果你使用的是Easy WP SMTP,虽然也可以成功地收到测试邮件,但是当你尝试注册或是忘记密码的时候,依然收不到邮件,系统会提示你服务器主机禁用了mail()函数,这时可以参照网上的教程,打开php的fsopen函数,然后修改mail函数为fsopen函数,之后大概率便可以使用。

但也有可能你和我一样遇见了小概率事件,如下图所示

已经开启了fsopen,并且php探针侦测到mail函数可用,然而还是提示你mail函数被禁用,换用WP Mail SMTP吧。