跳至正文
  • 22 views
  • 2 min read

解决wordpress用户注册收不到邮件验证

新浪微博 豆瓣 QQ 百度贴吧 QQ空间

前言

wordpress自带用户注册功能,但是当用户注册时,无法收到验证邮件,本教程就是解决如何此问题!

解决方案

首先找到主题模板函数文件functions.php (管理后台–>外观–>主题文件编辑器)

// 邮箱验证
function mail_smtp( $phpmailer ){
$phpmailer->From = "admin@****.com"; //发件人
$phpmailer->FromName = "分享吧"; //发件人昵称
$phpmailer->Host = "smtp.qq.com"; //SMTP服务器地址(比如QQ是smtp.qq.com,腾讯企业邮箱是smtp.exmail.qq.com,阿里云是smtp.域名,其他自行咨询邮件服务商)
$phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,SSL加密连接端口:465或587,qq是25,qq企业邮箱是465
$phpmailer->SMTPSecure = ""; //SMTP加密方式,常用的有ssl/tls,一般25端口不填,端口465天ssl
$phpmailer->Username = "admin@****.com"; //邮箱帐号,一般和发件人相同
$phpmailer->Password = '*********'; //邮箱密码
$phpmailer->IsSMTP(); //使用SMTP发送
$phpmailer->SMTPAuth = true; //启用SMTPAuth服务
}
add_action('phpmailer_init','mail_smtp');

添加以下内容到functions.php即可,同时还可以解决图标不显示问题

add_filter('get_avatar', function ($avatar) {
    return str_replace([
        'www.gravatar.com/avatar/',
        '0.gravatar.com/avatar/',
        '1.gravatar.com/avatar/',
        '2.gravatar.com/avatar/',
        'secure.gravatar.com/avatar/',
        'cn.gravatar.com/avatar/'
    ], 'cravatar.cn/avatar/', $avatar);
});

function mail_smtp( $phpmailer ){
		$phpmailer->From = "[email protected]";
		$phpmailer->FromName = "Stone's Blog";
		$phpmailer->Host = "mail.cacca.cc";
		$phpmailer->Port = 25;
		$phpmailer->SMTPSecure = "";
		$phpmailer->Username = "[email protected]";
		$phpmailer->Password = '********';
		$phpmailer->IsSMTP();
		$phpmailer->SMTPAuth = true;
	}
add_action('phpmailer_init','mail_smtp');

点击上面链接,设置自己的密码就OK了

发送邮件验证如图:

注意:

如果设置密码或者找回密码时提示  您的密码重设链接无效,请在下方请求新链接。

这是因为wordpress在链接前后加了”<>”默认链接到了后面的”>”

解决方法:

找到文件pluggable.php,在根目录/wp-includes/pluggable.php。

修改

$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";

接着找到文件wp-login.php,在根目录/wp-login.php

$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";

发表回复