TP5+PHPMailer 实现发送邮件功能

简介: 使用QQ邮箱或者163网易邮箱或者126邮箱,这里以qq邮箱为例来进行介绍。

准备工作

使用QQ邮箱或者163网易邮箱或者126邮箱,这里以qq邮箱为例来进行介绍。


分为三步:1.如果是本机需要开放端口25,如果是服务器的话需要添加一个465端口;


                 2.打开邮箱,需要开启邮箱的SMTP服务,开启之后返回一个授权验证码,后面要用


                 3.下载PHPMailer资源放在TP5框架的vendor目录下。


                 4.代码编写


一、PHPMailer是什么?

phpMailer 是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。


二、使用步骤


1.查看本机是否开放25端口

如果没有启动,可以使用cmd命令行开启,也可以在计算机->管理->服务中找到smtp服务,然后点击启动。


2.打开邮箱启动邮箱的SMTP服务

QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启。

2820593d4fe7400e8f0c6561d59dccec.png

需要注意的是授权码在后续步骤中会用到。


3.下载PHPMailer资源

(1)phpmailer 安装或者下载方式:


从 github 上下载:  GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP

(2)使用 composer 安装:


在打开的composer命令行界面输入


composer require phpmailer/phpmailer


(3)也可以通过我的资源链接:


点击下载资源


(4)下载完成后可以在TP5框架目录中看到这样一个文件


6768ce43c71a48e993c0756a33081c80.png

4.代码编写


(1)创建目录所需文件


主要思想是在主页index.html页面设置一个a链接来进行跳转进入email.html页面,在表单中输入发送人和发送验证内容,最后发送成功时页面提示200,页面失败时发送400;

e64832f7c0ef4169b3c48dd1be329039.png


(2)在index.html页面body中写入


bcf8526b3256497a8db9e4009dd8f0f4.png


(3)在index.php文件中创建一个类并写入一个函数叫target和emails



namespace app\index\controller; //引入命名空间


use think\Controller; //继承父类


use app\Common;//引入公共类


class Index extends Controller


{


   public function target(){        //跳转email.html页面


       return $this->fetch('email');


   }


  public function emails (){


       $em = new Common();


       $email = input('e_email');


       $code = input('e_content');


       echo $email;


       echo $code;


      return $em->send_code_to_email($email, $code);


   }


}


(4)在common.php公共配置文件中写入



// 应用公共文件


namespace app;


class Common


{


   public function send_code_to_email($email , $code)


   {


       //        echo 'send_code_to_email';


       //        vendor('PHPMailer.class#PHPMailer');


       vendor('PHPMailer.PHPMailerAutoload'); // 引入


    $toemail = $email;


       $mail = new \PHPMailer(); // 新建


       $mail->isSMTP(); //  开启SMTP


       $mail->CharSet = 'utf8'; // 设置编码


$mail->Host = 'smtp.qq.com'; // SMTP服务器


       $mail->SMTPAuth = true; // smtp需要鉴权 这个必须是true


       $mail->Username = 'xxx@qq.com'; // 发信人的账号


       $mail->Password = "开启邮箱STMP服务时生成的授权码"; // 密码,非邮箱密码,是SMTP生成的密码


       $mail->From = 'xxx@qq.com'; // 发信人的地址


       $mail->SMTPSecure = 'ssl'; // 采用ssl协议


       $mail->Port = 465; // 端口号


       $mail->FromName = "发件人"; // 发件人昵称


     $mail->addAddress($toemail); // 收信人地址


       $mail->addReplyTo('xxx@qq.com'); //回复的时候回复的邮箱,建议和发信人一样


       $mail->Subject = "验证码"; // 邮件主题


      $mail->Body = "您的验证码是:  " . $code . "   有效期为1分钟,本邮件请勿回复!"; // 邮件内容

       if (!$mail->send()) {


           return 400;


       } else {


return 200;

       }


   }


}


目录
相关文章
|
C++ 容器
掌握C++定时器:构建自己的定时器的分步指南
本文是一份详细的、分步指南,旨在帮助读者掌握C++定时器的构建过程。通过本文,读者将了解到什么是定时器,以及为什么需要自己构建定时器而不仅仅使用标准库中的函数。文章将从基础开始,介绍了利用C++的基本语法和操作符创建一个简单的定时器的步骤。随后,文章逐渐深入,介绍了如何优化定时器的性能,包括减少延迟和提高精度。
974 0
|
Java 编译器 Go
Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序
Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序
428 0
|
区块链
【photoshop】使用ps将图片另存为ico
【photoshop】使用ps将图片另存为ico
783 0
|
前端开发
使用 PHPMailer 实现邮件的实时发送
使用 PHPMailer 实现邮件的实时发送
152 0
使用 PHPMailer 实现邮件的实时发送
|
安全 编译器 程序员
全面解析C++11新特性:现代编程的新起点(上)
全面解析C++11新特性:现代编程的新起点
全面解析C++11新特性:现代编程的新起点(上)
|
Java 应用服务中间件 Maven
Idea的Maven部署及常用设置1
Idea的Maven部署及常用设置1
242 0
|
JavaScript 前端开发
js获取url参数值的几种方式
js获取url参数值的几种方式
|
网络安全 网络架构
Nmap扫描六种端口状态介绍
Nmap扫描六种端口状态介绍
792 2
阿里云域名持有者信息模板怎么填?
阿里云域名持有者信息模板怎么填?阿里云域名注册域名持有者个人或企业都需要有已经通过实名认证的信息模板,如果没有可用的信息模板,需要先创建信息模版,等待信息模板实名通过后才可以注册域名,阿里云百科来详细说下阿里云注册域名创建信息模板实名全过程
627 1
|
缓存 监控 网络协议
使用 Wireshark 实现 ARP 嗅探监听网络
使用 Wireshark 实现 ARP 嗅探监听网络