问题经过
当我们在用Wordpress密码找回功能及新用户注册邮件中 ,在用qq邮箱打开链接提示”您的密码重设链接无效,请在下方请求新链接。”
出现问题的原因
qq邮箱会对url中的”&”进行转义,转义之后变成了”&”,链接随之发生了改变,自然就出现了上面的问题。
解决办法
原理是wp_mail发送邮件格式默认是text格式,把wp_mail发送邮件的格式换成”text/html”的格式就可以了,修改前需要邮件的内容中的url加个a标签以便可以点击。
把以下代码插入到你的主题目录下的functions.php文件的末尾。
function reset_password_message($message, $key)
{
if (strpos($_POST['user_login'], '@')) {
$user_data = get_user_by('email', trim($_POST['user_login']));
} else {
$login = trim($_POST['user_login']);
$user_data = get_user_by('login', $login);
}
$user_login = $user_data->user_login;
$msg = __('有人要求重设如下帐号的密码:') . "<br/>";
$msg .= network_site_url() . "<br/>";
$msg .= sprintf(__('用户名:%s'), $user_login) . "<br/>";
$msg .= __('若这不是您本人要求的,请忽略本邮件。') . "<br/>";
$msg .= __('要重置您的密码,请打开下面的链接:') . "<br/>";
$msg .= sprintf('<a href="%s">点击重置密码</a>', network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login'));
return $msg;
}
add_filter('retrieve_password_message', 'reset_password_message', null, 2);
function haozhuti_set_mail_content_type()
{
if (in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'))) {
add_filter('wp_mail_content_type', 'haozhuti_set_html_mail_content_type');
}
}
add_action('init', 'haozhuti_set_mail_content_type');
function haozhuti_set_html_mail_content_type()
{
return 'text/html';
}
修改好的qq邮箱中的效果如下
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。