tp5中phpmail插件的使用
未知
2023-04-11 10:29:32
0次
数据库中新建一个表有验证码、过期时间、邮箱地址三个字段。比对客户输入的验证码是否正确。
html页面中的代码
<label class="control-label fl"><span>请输入邮箱收到的验证码:</span></label>
<div class="fl clearfix">
<input class="form-control fl" type="text" id="usrEmlCode"/>
<a href="javascript:" class="code-btn fl " id="emlLink" onclick="getCodeByEmlForPass()">获取邮件验证码</a>
<p class="code-text fl">验证码10分钟内有效</p>
</div>
<script type="text/javascript">
function getCodeByEmlForPass(){
var usrName = $("#usrNameHid").val();
$.ajax({
type: "post",
dataType: "json",
url: "/e/login/sendemail",
data: { "email": usrName},
beforeSend: function (xhr) {
$('#emlLink').removeAttr('onclick').css("cursor", "not-allowed");
},
success: function (ret) {
console.log(ret);
if (ret.code == "1000") {
startTimer('emlLink');
alert('验证码已经发送到您的邮箱!');
} else {
$('#emlLink').attr('onclick', 'getCodeByEmlForPass()').css("cursor", "pointer");
alert(ret.msg);
}
}
});
}
</script>
log.php中的代码
// ajax给用户发送邮件验证码,点击【获取邮件验证码】
public function sendEmail(){
$recieve_email=input('email');
//把用户邮箱、验证码和到期时间插入到表phpmail
$data['check_code']=substr(md5(uniqid()), 0,6);
$data['chkcode_period']=time()+600;
$data['email']=$recieve_email;
Db::name('phpmail')->insert($data);
$mail=phpEmail($recieve_email,$data['check_code']);
return json($mail);
}
common.php中的代码
function phpEmail($recive_email,$code){
Loader::import('phpmailer.phpmailer');//加载extend中的自定义类
Loader::import('phpmailer.SMTP');//加载extend中的自定义类
$openssl_funcs=get_extension_funcs('openssl');
if(!$openssl_funcs){
$mail_return_arr['code'] = 1001 ;
$mail_return_arr['msg'] = "请先开启openssl扩展" ;
return $mail_return_arr;
}
$mail = new \PHPMailer\PHPMailer(); //实例化
header("content-type:text/html;charset=utf-8");
// 使用SMTP方式发送
$mail->IsSMTP();
// 设置邮件的字符编码
$mail->CharSet='UTF-8';
// 企业邮局域名
$mail->Host = 'smtp.qq.com';
// $mail->Host = 'smtp.163.com';
//---------qq邮箱需要的------//设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
//设置ssl连接smtp服务器的远程服务器端口号 可选465或587
$mail->Port = 465;//---------qq邮箱需要的------
// 启用SMTP验证功能
$mail->SMTPAuth = true;
//邮件发送人的用户名(请填写完整的email地址)
$mail->Username = '3320@qq.com' ;
// $mail->Username = 'lun68@163.com' ;
// 邮件发送人的 密码 (授权码)
$mail->Password = 'tctqidfhi'; //修改为自己的授权码
//邮件发送者email地址
$mail->From ="3320@qq.com";
//发送邮件人的标题
$mail->FromName ="信息";
//收件人的邮箱 给谁发邮件
$email_addr = $recive_email;
//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
$mail->AddAddress("$email_addr", substr( $email_addr, 0 , strpos($email_addr ,'@')));
//回复的地址
$mail->AddReplyTo('3320@qq.com' , "" );
// $mail->AddAttachment("./mail.rar"); // 添加附件
//set email format to HTML //是否使用HTML格式
$mail->IsHTML(true);
//邮件标题
$mail->Subject = '找回密码验证码';
//邮件内容
$mail->Body = "<p style='color:red'>" . '尊敬的客户<br>您的邮箱验证码:' .$code. ',请在10分钟内完成验证。</p>';
//附加信息,可以省略
$mail->AltBody = '';
// 添加附件,并指定名称
// $mail->AddAttachment( './error404.php' ,'php文件');
//设置邮件中的图片
// $mail->AddEmbeddedImage("shuai.jpg", "my-attach", "shuai.jpg");
if( !$mail->Send() ){
$mail_return_arr['code'] = 1001 ;
$str = "邮件发送失败. <p>";
$str .= "错误原因: " . $mail->ErrorInfo;
$mail_return_arr['msg'] = $str ;
}else{
$mail_return_arr['code'] = 1000 ;
$str = "邮件发送成功";
$mail_return_arr['msg'] = $str ;
}
return $mail_return_arr;
}
相关内容