TP5+PHPMailer 实现发送邮件功能

  • 目录

    准备工作

    一、PHPMailer是什么?

    二、使用步骤

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

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

    3.下载PHPPHPMailer资源

    4.代码编写

    总结



准备工作

使用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服务,点击开启。TP5+PHPMailer 实现发送邮件功能_第1张图片

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

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框架目录中看到这样一个文件

TP5+PHPMailer 实现发送邮件功能_第2张图片

4.代码编写

(1)创建目录所需文件

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

TP5+PHPMailer 实现发送邮件功能_第3张图片

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

(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 = '[email protected]'; // 发信人的账号

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

        $mail->From = '[email protected]'; // 发信人的地址

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

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

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

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

        $mail->addReplyTo('[email protected]'); //回复的时候回复的邮箱,建议和发信人一样

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

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

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

            return 400;

        } else {

            return 200;

        }

    }

}


总结

这里只是通过一个demo来试验验证,您也可以写更好的方法。

你可能感兴趣的:(PHP,php)