问题说明
在我们使用阿里云的云虚拟主机搭建WordPress站点时,里面的邮件发送即使设置好了,也发送不了邮件。注:阿里云的主机都是通过SMTP来进行发送邮件的,需要开启主机的fsockopen。但是WordPress的SMTP是通过steam_connect_client进行发送的,而不是fsockopen。下面说个简单的方法来解决这项问题。
解决方法
1.打开阿里云虚拟主机的后台,从高级设置的php.ini设置中把fsockopen开启。如下图
2.进行修改/wp-includes/class-smtp.php中大概在270行左右(可以通过下面代码进行查询)
- $socket_context = stream_context_create($options);
- $this->smtp_conn = @stream_socket_client(
- $host . ":" . $port,
- $errno,
- $errstr,
- $timeout,
- STREAM_CLIENT_CONNECT,
- $socket_context
- );
3.把上面代码修改为如下代码
- $this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);
4.在完成上述操作之后可以去WordPress后台插件中安装一个WP SMTP的插件进行配置即可。
注:wp-smtp 的插件挺多,我刚开始用的几个都不知道是什么原因填写的信息是一样的 ,都通过了测试,但是实操新注册个新账户时还是收不到邮件,换个插件就好了,试了几个插件就这个easy WP SMTP 可以正常使用,刚开始用的wp mail bank 发送失败 ,WP Email SMTP表面测试通过,实测毛用没有。
用着前面两个插件的时候,我一直怀疑是不是阿里搞鬼,端口的问题,还是科技进步,网上给我攻略过时了!!?并不是,其实就是插件支持新版本WordPress的的问题。按照上面来没错的。
哦,补充一句,目前大多的SMTP服务器都是ssl加密的多,端口选465,yeah邮箱的 SMTP 密码一般是授权码跟登录密码不一样需要像下面设置,其他邮箱可能就是邮箱登录密码,这个需要测试下。
(吐槽一下,这个阿里云不够智能啊,用Mac传张照片都得先发到新浪博客,然后再复制过来,无奈_(:з」∠)_)