Begin5.2邮件验证问题 | WordPress邮件无法验证怎么解决?

2019年12月12日17:37:21 发表评论 2,874 次浏览

WordPress邮件无法验证是一个所有人都有遇到的问题,Begin5.2主题也不例外。如果不开通用户注册的话,这个功能完全用不到,但如果需要开通用户注册,邮件验证是一个绕不过去的问题。即使使用了User Generate Password插件让用户注册无需经过邮件验证,但是忘记密码功能仍然需要邮件验证。

WordPress有着丰富的插件,邮件发布亦然,通过WP SMTP插件,我们可以轻松的解决邮件发布问题。设置方法如下图所示:(插件在wordpress插件商城中都可以找到。)

Begin5.2邮件验证问题 | WordPress邮件无法验证怎么解决?

但是,问题亦然存在,使用WP SMTP插件设置完后,发现邮件无法发布出去,提示是“Could not authenticate.”这是怎么回事呢?

原因很简单,你的邮箱设置还没开通stmp服务,开通即可。以QQ邮箱为例,如下图所示:

Begin5.2邮件验证问题 | WordPress邮件无法验证怎么解决?

WordPress找回密码提示”您的密码重设链接无效,请在下方请求新链接。”

Begin5.2邮件验证问题 | WordPress邮件无法验证怎么解决?

解决方法如下:

 出现这个问题原因是wordpress程序源码有个bug,源码加的有<>这两个符号,前面这个符号没关系。但是在后面的话,地址在邮箱中>会被认为是目标站点地址的一部分。 

 url后面的“>”符号没有被解析成entity而是添加到url中了,这样也就倒是login参数被多加了一个字符。于是导致wp-login程序返回一个错误提示“您的密码重设链接无效,请在下方请求新链接。”

访问过去后连接自然就不对。我们下面就是删掉这两个符号。
第一个文件:/wp-login.php
第二个文件:/wp-includes/pluggable.php
我们先打开第一个文件wp-login.php,编辑他的源码。
然后查找“wp-login.php?action=rp&key=”,然后我们会看到一个搜索结果。大概在417行,不同版本位置可能不一样。 


 原文件代码如下:
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

我们将其修改为:
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
修改内容是network前面删除了 ‘<‘ .后面末尾处只删除>即可。
 
接着我们修改第二个文件pluggable.php
查找“wp-login.php?action=rp&key=”,然后我们会看到一个搜索结果。大概在2003行。不同版本位置可能不一样。

原文件代码如下:
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";

我们将其修改为:
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";

修改内容是network前面删除了 ‘<‘ .末尾同样是只删除>
修改完以上两处文件保存后就可以了。博主测试没有问题。(提示:修改完记得保存) 

修改后的效果图:

Begin5.2邮件验证问题 | WordPress邮件无法验证怎么解决?
Austin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: