TP5.1使用PHPmailer发送邮件及实战

本文介绍了如何在TP5.1框架中使用PHPmailer发送邮件,包括检查PHP环境、安装PHPmailer、配置邮件参数和编写发送邮件的公共函数。通过一个实际的联系表单例子展示了邮件发送的完整流程,详细讲解了前端表单、Ajax请求、控制器处理和邮件接收的步骤。
摘要由CSDN通过智能技术生成

邮件发送是项目中很常用的功能,可用作给用户发送邮箱验证码,也可用作用户工单提交,甚至可以在项目运行中发生异常时将异常信息或者作为计划任务将一段时间内的执行日志发送至运维/开发人员。这里将使用PHPmailer为例记录一下在TP5.1中从装包配参数到实现功能的过程。

一、首先要确定你的PHP环境是否开启了openssl,打开你的PHP安装目录的php.ini中搜索php_openssl.dll,若extension前有分号则去掉,若搜索不到这一项请手动添加。
在这里插入图片描述

二、在项目下使用composer安装PHPmailer包。

composer require phpmailer/phpmailer

在这里插入图片描述
在这里插入图片描述
安装完成后在vender中能找到phpmailer即代表下载安装成功。

三、写入公共配置项、写发送邮件公共函数。
首先打开config目录中的app.php在末尾添加一个配置项mail并写入部分配置,配置说明在注释中有涉及。

    'email' => [
        'SMTPDebug' => 0, // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
        'SMTPAuth' => true,  启用 SMTP 验证功能
        'SMTPSecure' => 'ssl', // 使用安全协议
        'Host' => 'smtp.qq.com', // SMTP 服务器
        'Port' => '465', // SMTP服务器的端口号
        'Username' => 'XXXXXXXXXX@qq.com', // SMTP服务器用户名
        'Password' => 'XXXXXXXXXX', // SMTP服务器密码
        'from' => "XXXXXXXXXX@qq.com", //发件人邮箱
        'fromname' => 'XX', //发件人昵称
    ],

这里以QQ邮箱为例,QQ邮箱的SMTP服务器及端口官方都有说明,这里需要注意的是SMTP服务器用户名默认是邮箱号,但是SMTP密码却不是邮箱密码,需要在邮箱中开启SMTP服务并获取授权码,这里填写的密码便是获得的授权码。我们登录QQ邮箱打开设置-账户找到这个设置项开启并获取授权码写入配置即可。发件人邮箱号需填写SMTP对应的邮箱号。
在这里插入图片描述

基础配置完成之后打开common.php写入我们的发送邮件公共函数

/**
 * 系统邮件发送函数
 * @param string $receiveMail 接收邮件的邮箱
 * @param string $name 接收邮件者名称
 * @param string $subject 邮件标题
 * @param string $body 邮件内容
 * @param string $attachment 附件列表
 * @return boolean
 * @throws \PHPMailer\PHPMailer\Exception
 */
function sendMail($receiveMail, $name, $subject = '', $body = '', $attachment = null) {
   
    $mail = new PHPMailer\PHPMailer\PHPMailer();           // 实例化PHPMailer对象
    $mail->CharSet = 'UTF-8';                              // 设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
    $mail->IsSMTP();                                       // 设定使用SMTP服务
    $mail->SMTPDebug = config('email')['SMTPDebug'];       // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
    $mail->SMTPAuth = config('email')['SMTPAuth'];         // 启用 SMTP 验证功能
    $mail->SMTPSecure = config('email')['SMTPSecure'];     // 使用安全协议
    $mail->Host = config('email')['Host'];                 // SMTP 服务器
    $mail->Port = config('email')['Port'];                 // SMTP服务器的端口号
    $mail->Username = config('email')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值