问题描述:
实现给客户发送邮件的功能。
解决办法:
下载phpmailer
<script type="text/javascript">
function getCodeByEmlForPass(){
var usrName = $("#usrNameHid").val();
$.ajax({
type: "post",
dataType: "json",
url: "/public/home/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>
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中的自定义类
$mail = new \PHPMailer\PHPMailer(); //实例化
header("content-type:text/html;charset=utf-8");
// 使用SMTP方式发送
$mail->IsSMTP();
//在本地发送成功,但是在服务器上就发送失败显示SMTP connect failed,把isSMTP去掉试试吧
// 设置邮件的字符编码
$mail->CharSet='UTF-8';
// 企业邮局域名
$mail->Host = 'smtp.exmail.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 = 'iola@itulan.com' ;
// $mail->Username = 'l91.bt@163.com' ;
// 邮件发送人的 密码 (授权码)
$mail->Password = '5Y7eifywAvhu'; //修改为自己的授权码
//邮件发送者email地址
$mail->From ="i-a@itulan.com";
//发送邮件人的标题
$mail->FromName ="荼兰信息";
//收件人的邮箱 给谁发邮件
$email_addr = $recive_email;
//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
$mail->AddAddress("$email_addr", substr( $email_addr, 0 , strpos($email_addr ,'@')));
//回复的地址
$mail->AddReplyTo('ila@itulan.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;
}