PHP 使用ThinkPHP实现电子邮件发送示例

文章目录

在我们很多的程序中都需要发送邮件去提示用户一些相关信息,应用的范围还是很广的,比如:登录验证需要验证码,后台管理系统中有变更需要发送邮箱提示等,而且邮件的发送相较于短信发送成本更低,是 免费 的!!
那么要实现邮件发送需要做以下操作:

首先我们需要设置我们的邮箱客户端授权,获取到授权码

找到我们的邮箱设置

我这边使用的是QQ邮箱,每个邮箱基本都差不多

去账号中找到这一堆服务,找到后开启smtp服务

开启服务后管理服务

在这里点击就可以获取到授权码啦

接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)

直接使用composer安装扩展phpmailer

复制代码
composer require phpmailer/phpmailer

在thinkPHP中封装一下邮件服务类

我把它封装在了application目录下的common.php公共类中,下面是代码:

php 复制代码
// 应用公共文件
namespace app;

class Common
{
    // 应用公共文件
    /**
     * 邮件发送
     * @param email 邮箱号,发送给谁
     * @param code 邮件内容
     */
    public function send_code_to_email($email, $code)
    {
        Vendor('PHPMailer.PHPMailerAutoload');//这里引入一下刚才安装扩展的自动加载类
        $mail = new \PHPMailer(); // 实例化类,新建
        $mail->isSMTP(); //  开启SMTP
        $mail->CharSet = 'utf8'; // 设置编码
        $mail->Host = 'smtp.qq.com'; // SMTP服务器
        $mail->SMTPAuth = true; // smtp需要鉴权 这个必须是true
        $mail->Username = ''; // 发信人的账号,这个需要是开启stmp服务的邮箱号
        $mail->Password = ""; // 密码,非邮箱密码,是SMTP生成的密码,也就是授权码
        $mail->From = ''; // 发信人的地址
        $mail->SMTPSecure = 'ssl'; // 采用ssl协议,这里采用了加密,端口需要进行开放:465或587
        $mail->Port = 465; // 端口号
        $mail->FromName = ""; // 发件人昵称
        $mail->addAddress($email); // 收信人地址
        $mail->addReplyTo($email); //回复的时候回复的邮箱,建议和发信人一样
        $mail->Subject = ""; // 邮件主题,看自己需求
        $mail->Body = $code; // 邮件内容
        if (!$mail->send()) {
            return json([400, $mail->ErrorInfo]);
        } else {
            return json([200, '验证码已经发送成功']);
        }
    }
}

我这边是只封装了收件人和邮件内容,看具体业务需求,可以将主题,发件人昵称也封装一下

实际调用

在需要调用的地方进行调用就可以了,当然要先将公共类引入

在需要调用的控制器文件中的命名空间下使用use引入

php 复制代码
use app\Common;

调用函数

php 复制代码
/**
 * 电子邮件
 * @param string $email邮箱号
 * @param string $code邮件内容
 * 具体到common应用公共函数文件内找senf_code_to_email方法
 */
public function sends()
{
    $email = input('email');//获取到收件人
    $code = input('code');//获取到邮件内容
    $send = new Common();//实例化公共类
    return $send->send_code_to_email($email, $code);//调用封装好的方法
}

效果

我这边直接用网页url调用了一下

收到邮件:

总结

总体其实还是比较简单的,需要注意如果不使用ssl安全协议的话端口是25,不过阿里云是强制ssl安全的,所以最好还是使用465端口比较好
到邮箱中授权开启获取授权码->在thinkPHP框架中使用composer安装PHPMailer扩展->封装一下发送邮件方法->在业务中调用即可

希望对大家有所帮助,如果觉得有用的话还请不吝三连

相关推荐
丰锋ff12 分钟前
基于 Qt 的智能门禁系统(二)
开发语言·qt
fpcc23 分钟前
跟我学C++中级篇——编译期的条件选择
开发语言·c++
SomeB1oody38 分钟前
【RustyML入门】6.3. 并行归约
开发语言·后端·机器学习·rust·教程
mqiqe2 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
lzhdim2 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
脉动数据行情2 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
爱学习的小邓同学2 小时前
Golang --- (1)第一个Golang程序
开发语言·后端·golang
zx_741484813 小时前
【Python 入门】面向对象基础:类、对象、成员变量与构造方法
开发语言·python
那年窗外下的雪.3 小时前
AIDC 学习日志|第 15 天|EVPN 多归属故障收敛与撤销机制
网络·学习·php
liangshanbo12154 小时前
虚拟列表深度面试题整理
java·开发语言·前端