WordPress 注册用户收不到邮件的解决方法

投稿   醒悟的凡灵  2018-02-13 07:32:27  74 人阅读  17 条评论

WordPress 是目前最流行的博客程序,许多个人博客和网站都采用它来搭建,简单易用的操作,丰富的主题和插件,让它能完成许多功能,创建不同需求的网站。我这次想把〖中国矫治网〗开放为用户注册,让用户自行在后台发布文章。但他们都报告没有收到注册邮件,不能设置用户密码,而导致注册失败。我在后台查看,他们已经完成注册,但没有收到注册邮件,就不能登录后台。

WordPress 注册用户收不到邮件的解决方法 WordPress 第1张

在网上搜索了一下,发现这是个普遍的问题,原因是各大主机服务商出于避免垃圾邮件的考虑,不支持发送邮件的 mail () 函数,只能启用 SMTP 方式发送邮件。像我网站所在的阿里云服务器,就是这样的。

有些网友给出了通过修改程序文件的方法,但每次升级后,又要重新修改,太麻烦了,所以我采用了插件的方式。

推荐使用 WP Mail SMTP 插件,可在后台搜索安装,是目前安装数最大的一款插件。插件的设置不复杂,但我还是遇到了问题,测试邮件时报错。

问题一:“From Email”要填写真实的邮箱地址,就是你作发送认证的邮箱地址。我受注释的误导,填写了没启用的邮箱地址:wordpress@xxx.com,想显示更官方些,结果出错了。“From Name”倒是可以随意填写的,一般可写上我们网站的名称,这样可明确告诉用户这是从哪里发来的邮件。

问题二:选择合适的 SMTP 服务器。看网上都是 QQ 邮箱的教程,我也是选用了 QQ 邮箱作为服务器的,但就是报错,后来改用 163 邮箱的,就成功了。设置如下图,SMTP Host:smtp.163.com,SMTP Port:465,启用 SSL 加密。

WordPress 注册用户收不到邮件的解决方法 WordPress 第2张

QQ 邮箱,由于启用了安全保护功能,密码这里我填写的是系统生成的授权码,不知是不是这个原因,导致失败。我也尝试使用 Gmail 的 API ,按教程操作都顺利完成,但 Google 对这个应用没有认证通过,虽然完成授权,但测试时出错,不知是什么原因。

问题三:将邮箱密码储藏在 wp-config.php 文件里,防止密码被泄。插件官方说明文档里就是这样提醒用户的,这个密码会用明文保存,为了安全,需储藏在 WordPress 根目录下的设置文件中,方法是添加两行代码:

  1. define('WPMS_ON', true );
  2. define('WPMS_SMTP_PASS', 'your_password' );

将 your_password 替换为你自己邮箱的密码就可以了。这里,后台设置界面,密码输入框就是灰色的。设置是否成功,大家可在 Email Test 中填入一个邮箱地址测试一下。

通过这样的操作,新用户顺利收到了注册邮件,但点击设置密码的链接时,却重复跳出重置密码的提示。Wordpress 提示“您的密码重设链接无效,请在下方请求新链接。”在寻回密码时,发送给用户的重置密码链接也是如此。

WordPress 注册用户收不到邮件的解决方法 WordPress 第3张

经“堕落的鱼”解释,原来是不同服务商对编码的解读不一致造成。邮箱收到重置密码邮件后,会将密码重置链接地址及其前后的“<>”一起当成链接地址生成超链接,点击此超链接后,由于传给 WordPress 的参数不对(多了个>),所以 WordPress 提示密码重设链接无效。可通过以下两个步骤解决此问题:

1、解决找回密码时提示“您的密码重设链接无效”:

打开 WordPress 根目录下的 wp-login.php,找到如下代码:

  1. $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

修改为:

  1. $message .=network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";

2、解决新用户注册时,点击邮件中的重置密码链接提示“您的密码重设链接无效”:

打开 WordPress 安装目录下的/wp-includes/pluggable.php,找到如下代码:

  1. $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";

修改为:

  1. $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";

以上修改后,用户收到的密码重置及新用户收到的密码设置邮件将不会再包含“<>”,用户再邮箱中点击链接后即可正常重置或者设置密码。

要注意的是,以上修改涉及到 WordPress 源代码的修改,而每次升级 WordPress 后修改会被覆盖,必须重新进行以上修改。这确定是比较麻烦的事儿,不知道哪位大神可以统一制作个插件不?我只是很奇怪,这个邮件的问题存在已经很久,为什么官方没有修改过来呢?WordPress 的升级频率是非常高的,难道这些问题只在我们中国大陆区发生吗?

历史上的今天:

文章标签: ,   ,  
原文地址:https://www.maqingxi.com/archives/3387.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 醒悟的凡灵 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
NEXT已经是最新一篇了
WordPress/zblogPHP免费响应式博客主题Blogs

 发表评论


  1. 好推博客
    好推博客 【状元】 @回复

    简直帮到大忙了,可以转载吗!

  2. 秋名特卖
    秋名特卖 【小白】 @回复

    成功收到邮件,谢谢

  3. 趣知识
    趣知识 【丞相】 @回复

    你这,大量不错的关于wp的文章

  4. 易发网
    易发网 【秀才】 @回复

    [害羞] 高深的看不懂呵呵,来点通俗的!

    • maqingxi
      maqingxi 【小白】2018-02-13 13:01  回复

      @易发网希望有高手能把这些修改都集成到一个插件中去,我们用起来就简单了。

  5. jimmy
    jimmy 【小白】 @回复

    我用的是WP SMTP也很不错,包括修改的发帖邮件等等哈哈

  6. 明月登楼
    明月登楼 【王爷】 @回复

    WordPress 这个邮件发送问题是个很古老的问题了!

  7. 阁主博客
    阁主博客 【小白】 @回复

    感觉费资源!

  8. 橘子书
    橘子书 【丞相】 @回复

    邮件通知除了自身插件设置,服务器也要支持,然后邮箱帐号的后台帐号也要开启。

  9. 钟水洲博客
    钟水洲博客 【进士】 @回复

    早就关闭邮件功能了

  10. 虎子
    虎子 【书童】 @回复

    收不到可能也跟服务器设置有关。

  11. 明月清风
    明月清风 【秀才】 @回复

    倒是我每次使用g头像哪个都接收不到哎!

  12. 银色月航
    银色月航 【进士】 @回复

    我的邮件提醒就挂了,还没找到原因

  13. 狂放
    狂放 【进士】 @回复

    其实wp本身有钩子啊,而且不需要修改文件,我看过源文件已经有fopen连接

    • maqingxi
      maqingxi 【小白】2018-02-13 12:59  回复

      @狂放那应该如何设置呢?进行这番改造也是迫不得已的下下策。