TP5+PHPMailer 实现发送邮件功能

本文介绍了如何使用PHPMailer库通过SMTP服务发送邮件,包括检查端口、开启邮箱SMTP服务、下载PHPMailer资源及编写PHP代码来实现邮件发送的过程。重点在于配置SMTP设置,如使用QQ邮箱的授权码,并展示了如何处理发送成功或失败的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


准备工作

使用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服务,点击开启。

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

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

4.代码编写

(1)创建目录所需文件

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

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

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

<?php

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公共配置文件中写入

<?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;

        }

    }

}


总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值