TP5使用 PHPMailer实现邮件发送
注:本文将使用qq邮箱作用示例,其他邮箱操作相同
一、QQ邮箱开启SMTP
1、登录qq邮箱后,点击“设置=>账户“,找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】栏目,如下图所示:(默认是关闭)
2、开启客户端授权码 (开启邮箱客户端授权后设置的密码。)
二、PHPMailer下载
1、打开PHPMailer文件,拷贝src文件,放入项目中的extend文件夹中,并且重命名为phpmailer,修改Exception.php、OAuth.php、SMTP.php、PHPMailer.php、POP3.php的命名空间为 namespace phpmailer;将自带的命名空间“namespace PHPMailer\PHPMailer”进行注释或者删除;
三、TP5代码实现邮箱发送
1、在页面里新建一个email.html文件,里面内容如下所示:
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#emailSubmit").click(function(){
var name = $("input[name='name']").val();
var tel = $("input[name='tel']").val();
var email = $("input[name='email']").val();
$.ajax({
type : "POST",
url : "/admin/Email/index",
data : {"name":name,"tel":tel,"email":email},
success : function(d) {
console.log(d);
if(d){
alert(d.msg);
}
},
//请求失败,包含具体的错误信息
error : function(e){
console.log(e.status);
console.log(e.responseText);
}
});
});
});
</script>
<form method="post" action="#">
<div class="fields">
<div class="field half">
<label for="name">姓名 Name</label>
<input type="text" autocomplete="off" name="name">
</div>
<div class="field half">
<label for="email">电话 Telphone</label>
<input type="text" autocomplete="off" name="tel">
</div>
<div class="field half">
<label for="name">邮箱 email</label>
<input type="text" autocomplete="off" name="email">
</div>
<ul class="actions">
<li><input type="button" value="提交" class="primary" id="emailSubmit"></li>
<li><input type="reset" value="清空内容" /></li>
</ul>
</form>
2、在控制器里新建一个Email.php文件,里面内容如下所示:
<?php
namespace app\admin\controller;
use think\Controller;
use phpmailer\PHPMailer;
class Email extends Controller
{
public function index()
{
if(request()->isAjax()){
$data = input('post.');
$name = $data['name'];
$tel = $data['tel'];
$useremail = $data['email'];
$email='xxx@qq.com';//获取收件人邮箱
$sendmail = 'xxx@qq.com'; //发件人邮箱
$sendmailpswd = ""; //客户端授权密码,而不是邮箱的登录密码,就是手机发送短信之后弹出来的一长串的密码
$send_name = 'xxx';// 设置发件人信息,如邮件格式说明中的发件人,
$toemail = $email;//定义收件人的邮箱
$to_name = 'hl';//设置收件人信息,如邮件格式说明中的收件人
$mail = new PHPMailer();//实例化
$mail->isSMTP();// 使用SMTP服务
$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
$mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
$mail->SMTPAuth = true;// 是否使用身份验证
$mail->Username = $sendmail; 发送方的
$mail->Password = $sendmailpswd;//客户端授权密码,而不是邮箱的登录密码!
$mail->SMTPSecure = "ssl";// 使用ssl协议方式
$mail->Port = 465;// qq端口465或587)
$mail->setFrom($sendmail, $send_name);// 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress($toemail, $to_name);// 设置收件人信息,如邮件格式说明中的收件人,
$mail->addReplyTo($sendmail, $send_name);// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
$mail->Subject = "这是标题".time();// 邮件标题
$mail->Body = "姓名:".$name."\r\n"."电话:".$tel."\r\n"."邮箱:".$useremail;
if (!$mail->send()) { // 发送邮件
// 输出错误信息
$msg = "Mailer Error: " . $mail->ErrorInfo;
return json(['code'=>'201','msg'=>$msg]);
}else{
return json(['code'=>'200','msg'=>'发送成功']);
}
return;
}
return view('index/email');
}
}
四、其他
好啦,到这次算是成功了。如果有出现其他问题欢迎在评论区留言