相信有些朋友会跟我一样,使用不了邮箱功能,具体测试方法:在站点登录页或者首页点击注册,填完注册邮箱后却收不到主站发出的邮件,另外一种情况就是"找回密码时,填了账号,客户端但是收不到邮件"
此时主站会提示"发送邮件出现问题之类的提示" 具体我当时忘记截图了。
解决方法
第一步:检查主机或者vps是否支持main() 函数
附检测mail函数是否禁用的代码
使用PHP探针来检测主机商是否禁用了mail函数。
PHP探针代码如下,保存为php文件上传到服务器打开就可以测试出来:
<?php if (function_exists('mail')) { echo "支持mail()函数!"; } else echo "不支持mail()函数!"; ?>
1.1如果检测到主机商禁用了mail函数,解决方法如下
function mail_smtp( $phpmailer ){ $phpmailer->From = "12345@qq.com"; //发件人 $phpmailer->FromName = "张三"; //发件人昵称 $phpmailer->Host = "smtp.qq.com"; //SMTP服务器地址 $phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,具体谷歌百度 $phpmailer->SMTPSecure = ""; //SMTP加密方式,常用的有SSL/TLS,具体谷歌百度 $phpmailer->Username = "12345@qq.com"; //邮箱帐号 $phpmailer->Password = ***********; //邮箱密码(自定义) $phpmailer->IsSMTP(); //使用SMTP发送 $phpmailer->SMTPAuth = true; //启用SMTPAuth服务 } add_action('phpmailer_init','mail_smtp');
1.2如果支持此函数,则跳过此步骤
第二步:安装邮件插件
搜索WP-Mail-SMTP插件,安装后启用设置
1、填写你的邮箱地址,你打算用哪个邮箱发信件,如:12345@qq.com
2、填写你想显示的发件人名称,如:张三
3、不用管了Return Path
4、你选择发信邮箱的SMTP地址。不同的邮箱不一样哦(腾讯的smtp.qq. com, 163邮箱smtp.163.com 大部分都是这种格式,参照各自邮箱官方公布的SMTP地址。)
5、默认端口 25
6、第一个选项
7、第二个选项,使用SMTP验证(这个不验证是不可能发信成功的哦!)
8、登陆邮箱名,如:12345@qq.com
9、输入密码 ****** (你邮箱对应的登录密码)
第三步,测试注册账号,看能否收到邮件。一般没有问题。不过我遇到了如下要说的发送的邮件链接无法打开,提示失效
链接失效解决方法
有不少网友遇到点击wordpress密码重置链接出现“抱歉,该key似乎无效。”的错误提示,其实出现这个问题的根本原因是代码中的”>”被带进了链接,点击链接后跳转的地址变成了http://www.XXX.com
解决方法:打开根目录的wp-login.php查找wp-login.php?action=rp&key=$key&login= 出来结果中蓝色标记(即<>)的字符去掉。
$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”;
保存后重启一下php服务和web服务就可以了。
另外还有种方法我这边没测试,也贴出来吧
将下面代码添加到当前主题的functions.php文件中。 /** * 修复 WordPress 找回密码提示“抱歉,该key似乎无效” */ 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 = __('有人要求重设如下帐号的密码:'). "\r\n\r\n"; $msg .= network_site_url() . "\r\n\r\n"; $msg .= sprintf(__('用户名:%s'), $user_login) . "\r\n\r\n"; $msg .= __('若这不是您本人要求的,请忽略本邮件,一切如常。') . "\r\n\r\n"; $msg .= __('要重置您的密码,请打开下面的链接:'). "\r\n\r\n"; $msg .= 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);
至此问题解决。
文章参考:https://www.tuhongwei.com/34.html
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 26, 2016 at 09:24 pm