欢迎访问宙启技术站
智能推送

使用PHPMailer在ThinkPHP5中发送电子邮件

发布时间:2023-05-14 08:54:12

随着互联网的发展,电子邮件成为了人们日常中不可或缺的一部分。在网站开发中,电子邮件的使用也十分广泛,比如注册、找回密码、订单通知等。本文将介绍如何在ThinkPHP5中使用PHPMailer发送电子邮件。

一、安装PHPMailer

PHPMailer是一个用于发送电子邮件的PHP类库,它可以方便地与SMTP服务器进行通信,并支持各种附件格式等功能。安装PHPMailer十分简单,我们可以通过Composer来安装,只需在终端中输入以下命令即可:

composer require phpmailer/phpmailer

二、配置邮件服务器

使用PHPMailer发送电子邮件时,需要配置一个SMTP服务器。我们可以在application/config.php文件中新增一项配置,如下所示:

return [
    // ...
    'mailer'   => [
        'host'      => 'smtp.163.com',
        'port'      => 465,
        'username'  => 'your_email@163.com',
        'password'  => 'your_email_password',
        'from_name' => 'Your Name',
        'from'      => 'your_email@163.com',
        'secure'    => 'ssl',
    ],
];

这里以163邮箱为例,host填写SMTP服务器地址,port填写SMTP服务器端口号,usernamepassword是你的邮箱账号和密码,from_name填写发送邮件时显示的名称,from填写发送邮件的邮箱地址,secure填写SSL或TLS,具体可以参考你所使用的SMTP服务器的配置。

三、使用PHPMailer发送邮件

在配置完邮件服务器后,就可以使用PHPMailer发送邮件了。我们可以在控制器或模型中引入PHPMailer类库,然后进行相应的配置和发送操作。

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;

class Mail
{
    public static function send($to, $subject, $body)
    {
        $mailer = new PHPMailer(true);
        try {
            // 邮件服务器配置
            $config = config('mailer');
            $mailer->isSMTP();
            $mailer->Host       = $config['host'];
            $mailer->Port       = $config['port'];
            $mailer->SMTPSecure = $config['secure'];
            $mailer->SMTPAuth   = true;
            $mailer->Username   = $config['username'];
            $mailer->Password   = $config['password'];
            // 发送人
            $mailer->setFrom($config['from'], $config['from_name']);
            // 接收人
            $mailer->addAddress($to);
            // 主题和内容
            $mailer->Subject = $subject;
            $mailer->Body    = $body;
            // 发送邮件
            $mailer->send();
            return true;
        } catch (Exception $e) {
            return false;
        }
    }
}

这里我们将发送邮件的操作封装进一个Mail类的静态方法中,方法接收三个参数:接收人邮箱地址、邮件主题和邮件内容。我们调用PHPMailer类库的相应方法来进行邮件发送的操作。

至此,我们已经完成了在ThinkPHP5中使用PHPMailer发送电子邮件的操作。使用这种方式,我们可以避免PHP原生方法发送邮件时的一些限制,还可以轻松地添加附件等更多功能。