Press "Enter" to skip to content

WordPress 程序万网主机 smtp 发邮件失败解决办法

本文最后更新于 2019-07-08,如您发现本文中的内容已失效请留言告知。

最近有俍友和我反应,每次留言都要输入一遍信息很麻烦,希望我可以把注册用户功能开启。好的建议一定要执行,老俍开启注册用户功能后却发现,WordPress 无法发送激活邮件给注册用户,这不是瞎菜了。

根据网上的说明与实际操作整理了一份,《 WordPress 程序万网主机 smtp 发邮件失败解决办法》的文章,希望可以帮到你。

我的虚拟主机是阿里云(查看我的主机配置)的。安装的是 WordPress 4.9.8博客系统。使用的邮件发送插件是 WP Email SMTP,之前也设置过用户评论回复功能,一切正常。但就是没有新用户注册激活邮件。

解决办法,请按照下面步骤操作:

1.打开阿里云虚拟主机的后台,从高级设置的 php.ini 设置中把 fsockopen 开启。如下图:

aliyun_admin.png

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);
            set_error_handler(array($this, 'errorHandler'));     **/
            $this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);
/** stream_socket_client(
                $host . ":" . $port,
                $errno,
                $errstr,
                $timeout,
                STREAM_CLIENT_CONNECT,
                $socket_context
            );  **/

当我完成了上述操作以为大功告成,测试了一下结果还是没有起到作用。

我又重新分析了一下问题,第一,SMTP 的问题,我用了 QQ 邮箱和网易邮箱都做过测试除了激活邮件其他正常;第二,需要改的程序没有改好,又对比了几个网站,应该没问题;第三,smtp 插件的问题,但是插件也可发送别的邮件呀。

借用福尔摩斯一句话“排除所有不可能的因素,剩下的结果,即使再不可思议,也是事实的真相”。问题一、二都是刚刚处理完成,只有问题三的 SMTP 插件是早就安装的,还是换个别的插件试试吧。

万万没想到,在测试第三插件 easy wp smtp 设置完成后,问题解决了。注册用户可以收到激活邮件了,我去,这是啥情况!

好吧,我也懒得去想啥情况了,反正黑猫白猫能抓到老鼠就是好猫。重点提示:管理员邮箱必须和 smtp 插件是一个邮箱才可以。

备份一下QQ邮箱与网易邮箱的设置:

QQ邮箱:smtp.qq.com 端口号:465
网易邮箱:smtp.163.com 端口号:465

也许还有一种情况,邮件是收到了,但是用户就是不能激活密码。密码邮件提示:“您的密码重设链接无效,请在下方请求新链接。”请看我另外一篇文章《WordPress新用户不能成功激活密码的解决办法》。


本博客 [ 俍注 ] 内除注明转载文章,其他均为老俍独立创作。
原创不易,转载请保留原文链接:转载自 俍注 | ONEinf.com

共 2 条评论,我也要写评论

  1. wehut
    wehut 2019-07-23

    照着老俍推荐的插件,我的博客也弄上了这个功能,简单测试了一下,很实用

发表评论

电子邮件地址不会被公开。 必填项已用*标注