PHP:ThinkPHP使用PHPMailer发送html邮件

举报
彭世瑜 发表于 2021/11/30 23:58:51 2021/11/30
5.8k+ 0 0
【摘要】 文档 https://github.com/PHPMailer/PHPMailer 安装 composer require phpmailer/phpmailer 1 代码示例 配置文件 con...

文档

安装

composer require phpmailer/phpmailer

  
 

代码示例

配置文件 config/mail.php

<?php
// +----------------------------------------------------------------------
// | 邮件系统配置
// +----------------------------------------------------------------------

return [
    'MAIL_HOST'      => 'smtp.163.com',
    'MAIL_PORT'      => 465,
    'MAIL_USERNAME'  => 'xxx@163.com',
    'MAIL_PASSWORD'  => 'xxxxxx',
    'MAIL_FROM_NAME' => '山中无老虎',
];
  
 
<?php

namespace app\service;

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

class MailService
{
    public static function send($subject, $body, array $address_list = [])
    {
        $mail = new PHPMailer(true);

        //服务器配置
        $mail->CharSet   = "UTF-8";   //设定邮件编码
        $mail->SMTPDebug = SMTP::DEBUG_OFF; // 调试模式输出
        $mail->isSMTP();                 // 使用SMTP
        // SMTP服务器
        $mail->Host = config('mail.MAIL_HOST');
        // 服务器端口 25 或者465 具体要看邮箱服务器支持
        $mail->Port       = config('mail.MAIL_PORT');
        $mail->SMTPAuth   = true;  // 允许 SMTP 认证
        $mail->Username   = config('mail.MAIL_USERNAME');  // SMTP 用户名  即邮箱的用户名
        $mail->Password   = config('mail.MAIL_PASSWORD');  // SMTP 密码  部分邮箱是授权码(例如163邮箱)
        $mail->SMTPSecure = 'ssl';  // 允许 TLS 或者ssl协议
        //发件人
        $mail->setFrom(config('mail.MAIL_USERNAME'), config('mail.MAIL_FROM_NAME'));

        // 收件人
        foreach ($address_list as $address) {
            $mail->addAddress($address);
        }

        //Content
        $mail->isHTML(true);                                  // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容
        $mail->Subject = $subject;
        $mail->Body    = $body;

        $mail->send();
    }

}

  
 

测试

<?php
require_once __DIR__ . '/../../vendor/autoload.php';

((new \think\App())->http)->run();
use app\service\MailService;
use PHPUnit\Framework\TestCase;
class MailServiceTest extends TestCase
{
    /**
     * @doesNotPerformAssertions
     */
    public function testSend()
    {
        MailService::send('标题', '内容', ['xxx@qq.com']);
    }
}
  
 

如果需要发送内容更丰富的html,可以引入模板引擎去渲染邮件内容
PHP:ThinkPHP使用Twig渲染html

参考
PHP 使用 phpmailer 发送电子邮件

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/121638108

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。