- A+
所属分类:Web开发
朋友在小站注册帐号后,发现注册以后系统不能发送包含密码的通知邮件,在网上搜了搜发现遇到这个问题的还真不少。经过一番折腾,终于解决了该问题,现把一点经验分享如下。
系统不发送邮件问题,分两种情况:
(1)如果所有情况,如发表评论时邮件也发送不出邮件的话,应该是你的主机不支持mail函数了。如果是本机使用,就安装个SMTP服务器;如果用的虚拟主机,就让服务商开通邮件功能。
(2)如果其它时候邮件收发正常,只是用户注册时不能发送邮件,则可能是邮件运营商把你的系统发送的邮件当作垃圾邮件直接过滤掉了。
这里只讲一下第二种情况的解决方法,同样有两种方法:
(1)在后台–>设置–常规 里把管理员邮箱修改为 163 gmail yahoo 等常用邮箱,而不用虚拟主机提供的邮箱服务以免被当作机器人。比如,我原来用的虚拟主机商提供的admin@ucooper.com,换为 ucooper01@gmail.com就工作正常了。
(2)让系统不发邮件,直接在用户注册后显示密码。
要修改的地方其实也不算多,只需改动WordPress根目录下的 wp-login.php 即可。
1、搜索下面这句,位于 register_new_user 函数中。用于注册成功后发送通知。找到后把它注释掉(指令前面加 //)。注:如果你不想取消该功能就无需注释掉这句。
wp_new_user_notification($user_id, $user_pass);
2、在上面这句的下一行加上两句:
setcookie(“u”, $user_login);setcookie(“user_pass”, $user_pass);
目的是把注册时填写的用户名,以及wordpress随机生成的密码写入cookies,以便在后面调用。
3、搜索下面这句
$errors->add(‘registered’, __(‘Registration complete. Please check your e-mail.’), ‘message’);
并把它替换为
$errors->add(‘registered’, __(‘ ^__^ 注册成功!用户名:’.$_COOKIE[“u”].’密码:’.$_COOKIE["user_pass"].’(登录后自行修改成您便于记忆的密码)’), ‘message’);
OK,这样就可以了,测试一下吧!