为了实现在用户注册时,发送激活邮件到用户邮箱,所以今天需要使用到smtp发送邮件,详情见这篇文章:代码狗——使用smtp发送邮件
- 找到你的wordpress主题文件目录下的functions.php文件,并打开它。
- 找到如下的标签:
复制
add_action( 'user_register', 'auto_login_new_user');//auto_login_new_user 不一定相同,只要第一个参数相同就好了
- 在该标签对应的函数中适当的位置增加如下获取用户邮箱和发送邮件代码(发送邮件需要smtp发送邮件类库,见上面的链接)
复制
$con=mysql_connect("localhost", "root", "800820"); if (!$con) { die("数据库连接失败: " . mysql_error()); }else{ mysql_select_db("wp_users",$con); $token=md5(uniqid(mt_rand(),1)); $sql="UPDATE wp_users set token='"; $sql=$sql.$token."',status='0',token_time='".gettime()."' where id='"; $sql=$sql.$user_id."'"; mysql_query($sql); $sql="select * from wp_users where id='".$user_id."'"; $result=mysql_query($sql); while($row=mysql_fetch_array($result)){ $email=$row['user_email']; } require("smtp.php"); //使用163邮箱服务器 $smtpserver = "smtp.163.com"; //163邮箱服务器端口 $smtpserverport = 25; //你的163服务器邮箱账号 $smtpusermail = "@163.com"; //收件人邮箱 $smtpemailto = $email; //你的邮箱账号(去掉@163.com) $smtpuser = "@163.com";//SMTP服务器的用户帐号 //你的邮箱密码 $smtppass = ""; //SMTP服务器的用户密码 //邮件主题 $mailsubject = "测试邮件发送"; //邮件内容 $mailbody = "你的激活链接是:http://127.0.0.1/jihuo.php?user_id=".$user_id."&token=".$token; //邮件格式(HTML/TXT),TXT为文本邮件 $mailtype = "TXT"; //这里面的一个true是表示使用身份验证,否则不使用身份验证. $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass); //是否显示发送的调试信息 $smtp->debug = TRUE; //发送邮件 $issent=$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype); if($issent=true){ echo "注册成功!去激活吧!"; }else{ echo "发生了一个错误,联系管理员!";} }
- 在functions.php文件的适当位置增加函数取时间。
复制
function gettime(){ date_default_timezone_set("Asia/Hong_Kong"); $time=Date("Y-m-d H:i:s"); return $time;}
- 保存文件,注册效果如下:
注:这里纠正一下之前的错误,本来我是打算使用时间戳来限制激活邮件的有效期的,现在发现使用datetime类型更方便,所以以前创建的token_time字段就没用了,修改为datetime类型。修改方式如下:
删除字段:alter table wp_users drop token_time;
添加字段:alter table wp_users add token_time datetime default null;
也可使用数据库管理工具进行修改。
评论 (0)