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')
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用PHPMailer发送异步邮件的示例代码: ```php // 引入PHPMailer类 use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // 异步发送邮件函数 function sendMailAsync($to, $subject, $body) { // 新建一个PHPMailer对象 $mail = new PHPMailer(true); try { // 配置SMTP服务器 $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'username'; $mail->Password = 'password'; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; // 配置邮件内容 $mail->setFrom('from@example.com', 'From Name'); $mail->addAddress($to); $mail->Subject = $subject; $mail->Body = $body; // 发送邮件 $mail->send(); return true; } catch (Exception $e) { // 发送失败,记录错误日志 error_log($e->getMessage()); return false; } } // 调用异步发送邮件函数 $to = 'recipient@example.com'; $subject = 'Test Subject'; $body = 'Test Body'; sendMailAsync($to, $subject, $body); ``` 在这个示例中,我们使用PHPMailer类来发送邮件。我们首先引入这个类,然后定义了一个`sendMailAsync`函数来异步发送邮件。该函数接受收件人地址、邮件主题和邮件正文作为参数。在函数内部,我们新建了一个PHPMailer对象,并使用SMTP服务器配置了邮件发送选项。然后,我们配置了邮件的内容,并使用`send`方法来实际发送邮件。如果发送成功,函数返回`true`,否则返回`false`并记录错误日志。最后,我们调用异步发送邮件函数来发送邮件。 请注意,这个示例中的`sendMailAsync`函数并没有使用PHP的异步机制。如果您想使用PHP的异步机制来发送邮件,您可以使用Swoole扩展或其他类似的工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值