前言
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";