问题说明
在我们使用阿里云的云虚拟主机搭建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);
修改完后效果如下↓
- $socket_context = stream_context_create($options);
- $this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);
4.在完成上述操作之后可以去WordPress后台插件中安装一个WP SMTP的插件进行配置即可。
最后在提醒一下,如果升级WordPress版本,记得要重新修改一下。