您的位置:首页 > 编程语言 > PHP开发

使用phpmailer发送邮件,且需要激活完整代码

2015-03-23 17:20 711 查看
1、需要下载phpMail包

2、数据库需要字段为token(邮箱激活码),token_exptime(激活码有效期),status(是否被激活0,1)

//页面 代码,

<body>

<h1>欢迎{$user}登录</h1>

<form action="" method="post" id="form">

<table border='1'>

姓名:<input type="text" name="user" id="user"/><br/>

密码:<input type="password" name="pwd" id="pwd"/><br/>

确认密码:<input type="password" name="confirmPwd" id="confirmPwd"/><br/>

性别:<input type="radio" value="男" id="sex" name="sex"/><input type="radio" id="sex" value="女" name="sex"/> <br/>

邮箱:<input type="text" name="mail" id="mail"/>    <input type="button" name="confirmMail" id="confirmMail" value="邮箱确认"><br/>

电话号码:<input type="text" name="phone" id="phone" /><br/>

<input type="button" name="sub" id="sub" value="提交"/>

</table>

</form>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">

</script>

<script>

$("#sub").on('click',function(){

var confirmPwd = $("#confirmPwd").val();

var user = $("#user").val();

var pwd = $("#pwd").val();

var sex = $("#sex").val();

var mail = $("#mail").val();

var phone = $("#phone").val();

var url = "__URL__/addUser";

if(user==''){

alert("用户名不能为空");

}else if(pwd==''){

alert("密码不能为空");

}else if(confirmPwd==""){

alert("确认密码不能为空");

}else if(pwd!=confirmPwd){

alert("密码不一致,请重新确认密码");

}else if(mail==""){

alert("邮箱地址不能为空");

}else{

$.post("__URL__/addUser",{mail:mail,user:user,pwd:pwd,sex:sex,phone:phone},function(data){

if(data==1){

location.href = '__URL__/index';

}else{

alert('注册失败');

}

},'JSON');

}

})

</script>

</body>

//控制器代码

//添加模块,当点击注册时候,调用sendMail方法

public function addUser(){

$model = M();

$phone = $_POST['phone'];

$user = $_POST["user"];

$pwd = $_POST["pwd"];

$sex = $_POST['sex'];

$mail = $_POST['mail'];

//定义激活码

$token = md5($user.$pwd.time());

$token_exptime = time()+60*60*24;

$where = array(

'token_exptime' =>$token_exptime,

'password' => md5($pwd),

'phone' => $phone,

'token' => $token,

'mail' => $mail,

'name' => $user,

'sex' => $sex,

);

$add = $model->table('tp_user')->add($where);

$this->sendMail($mail,$user,$token);

if($add){

echo '1';

}else{

echo "2";

}

}

/sendMail方法,调用think_send_mail方法执行发送邮件

public function sendMail($mail,$user,$token){

$body = "亲爱的".$user.":<br/>感谢您在我站注册了新帐号。<br/>请点击链接激活您的帐号。<br/>

<a href='http://localhost/thinkphp/index.php/Home/Index/update?token=$token' target='_blank'>http://localhost/thinkphp/index.php/Home/Index/update?token=$token</a><br/>如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接24小时内有效。";

$r = $this->think_send_mail($mail,$user,'欢迎注册',$body);

}

//发送邮件方法

public function think_send_mail($to, $name, $subject = '', $body = '', $attachment = null){

header("Content-Type: text/html; charset=utf-8");

$config = C('THINK_EMAIL');

vendor('PHPMailer.class#phpmailer'); //从PHPMailer目录导class.phpmailer.php类文件

$mail = new \PHPMailer(); //PHPMailer对象

$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码

$mail->IsSMTP(); // 设定使用SMTP服务

$mail->SMTPDebug = 1; // 关闭SMTP调试功能

$mail->SMTPAuth = true; // 启用 SMTP 验证功能

$mail->Host = $config['SMTP_HOST']; // SMTP 服务器

$mail->Port = $config['SMTP_PORT']; // SMTP服务器的端口号

$mail->Username = $config['SMTP_USER']; // SMTP服务器用户名

$mail->Password = $config['SMTP_PASS']; // SMTP服务器密码

$mail->SetFrom($config['FROM_EMAIL'], $config['FROM_NAME']);

$replyEmail = $config['REPLY_EMAIL']?$config['REPLY_EMAIL']:$config['FROM_EMAIL'];

$replyName = $config['REPLY_NAME']?$config['REPLY_NAME']:$config['FROM_NAME'];

$mail->AddReplyTo($replyEmail, $replyName);

$mail->Subject = $subject;

$mail->AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端";

$username ='AAAA';

$mail->MsgHTML($body);

$mail->AddAddress($to, '342772383');

if(is_array($attachment)){ // 添加附件

foreach ($attachment as $file){

is_file($file) && $mail->AddAttachment($file);

}

}

return $mail->Send() ? true : $mail->ErrorInfo;

}

//config中 邮件配置

//邮件配置

'THINK_EMAIL' => array(

'SMTP_HOST' => 'smtp.163.com', //SMTP服务器

'SMTP_PORT' => '25', //SMTP服务器端口

'SMTP_USER' => '1111@163.com', //SMTP服务器用户名

'SMTP_PASS' => 'aaa', //SMTP服务器密码

'FROM_EMAIL' => '1111@163.com', //发件人EMAIL 和SMTP服务器用户名保持一致

'FROM_NAME' => '易享微代', //发件人名称

'REPLY_EMAIL' => '', //回复EMAIL(留空则为发件人EMAIL)

'REPLY_NAME' => 'AAAAA', //回复名称(留空则为发件人名称)

),

1、注意 需要把网易邮箱中STMP,POP3开启

2、SMTP服务器用户名需要和发件人EMAIL一致

3、关闭SSL安全认证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: