ThinkPHP5.0+PHPMailer将表单内容发送到指定邮箱

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');
    }
}

四、其他
好啦,到这次算是成功了。如果有出现其他问题欢迎在评论区留言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值