PHP邮件发送:PHPMailer

说一下PHPMailer发送邮件,很简单!

参考:
gitHub:PHPMailer
菜鸟教程:PHPMailer

<?php
/**
 * Created by PhpStorm
 * @author sxd
 * @data 2021/5/10 13:27
 */

namespace app\service;

//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
use app\facade\Log;

class PhpMailerService
{
    public function send($params)
    {
        //Instantiation and passing `true` enables exceptions
        $mail = new PHPMailer(true);
        try {
            //Server settings
            $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // 调试模式:启用详细调试输出,默认关闭、生产环境请注释
            $mail->isSMTP();                                            // 使用SMTP
            $mail->Host       = $params["host"];                        // SMTP服务器,例qq的:smtp.qq.com
            $mail->SMTPAuth   = true;                                   // 启用SMTP验证
            $mail->Username   = $params["username"];                    // SMTP 用户名  即邮箱的用户名,例:user@example.com
            $mail->Password   = $params["password"];                    // SMTP 密码  部分邮箱是授权码(例如163邮箱)
            $mail->SMTPSecure = "ssl";                                  // 允许 TLS 或者ssl协议
            $mail->Port       = 465;                                    //服务器端口 25 或者465 具体要看邮箱服务器支持

            //收件人
            $mail->setFrom($params["from"], '');  // 发件人 例:from@example.com
            $mail->addAddress($params["to"], '');     // 收件人 例:to@example.com
            // $mail->addAddress('ellen@example.com');               // 可添加多个收件人
            $mail->addReplyTo($params["from"]);  // 回复的时候回复给哪个邮箱 建议和发件人一致
            // $mail->addCC('cc@example.com');  // 抄送
            // $mail->addBCC('bcc@example.com');   // 密送

            //附件
            // $mail->addAttachment('/var/tmp/file.tar.gz');         // 添加附件
            // $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // 发送附件并且重命名

            //内容
            $mail->isHTML(true);                                  // 邮件正文是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容
            $mail->Subject = $params["subject"];  // 邮件主题
            $mail->Body    = $params["body"];   // 邮件正文
            // $mail->AltBody = $params["body"];  // 不带html样式的正文:如果邮件客户端不支持HTML则显示此内容
            $mail->send();
            Log::record("邮件发送成功,内容:" . json_encode($params), 'info');
            return true;
        } catch (Exception $e) {
            Log::record("邮件发送失败,内容:" . json_encode($params) . ",失败原因:{$mail->ErrorInfo}", 'error');
            return false;
        }
    }

}
上一篇:PHPMailer远程命令执行漏洞复现


下一篇:tp5.1 使用 phpmailer 发送电子邮件