ThinkPHP项目中使用phpmailer实现发邮件功能

在ThinkPHP项目中使用邮件功能,可以使用phpmailer这个第三方库来实现。
首先安装一下这个第三方库。

composer require phpmailer/phpmailer

以qq邮箱为例,介绍使用方法。
1、首先打开qq邮箱,进入设置->账户
2、点击开启POP3/SMTP服务。然后按照提示生成授权码
ThinkPHP项目中使用phpmailer实现发邮件功能_第1张图片

生成后记得记录下授权码。然后把下面代码的password替换成这个授权码。邮箱你现在申请的这个邮箱地址

下面代码是用phpmailer封装的一个工具类。只要替换上自己的邮箱和密码就能直接使用了。




namespace app\api\util;


use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use think\contract\Arrayable;

class MailUtil
{
     

    protected $mail;

    protected $from = '[email protected]'; // 改成自己的邮箱
    protected $fromName = 'jiangxiaoju';  // 改成自己的名字
    protected $password = 'password';  // 替换上自己的密码


    public function __construct() {
     

        $this->mail = new PHPMailer(true);
        $this->mail->SMTPDebug = SMTP::DEBUG_OFF;
        $this->mail->isSMTP();
        $this->mail->Host       = 'smtp.qq.com';                    // 如果是使用qq邮箱的话就用 smtp.qq.com
        $this->mail->SMTPAuth   = true;                                   // Enable SMTP authentication
        $this->mail->Username   = $this->from;                     // SMTP username
        $this->mail->Password   = $this->password;                               // SMTP password
        $this->mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
        $this->mail->Port       = 465;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    }


    public function send(Array $arrayable){
     

        if(!array_key_exists("isHTML",$arrayable)) {
     
            $arrayable["isHTML"] = true;
        }
        if(!array_key_exists("Subject",$arrayable)) {
     
            $arrayable["Subject"] = '';
        }
        if(!array_key_exists("Body",$arrayable)) {
     
            $arrayable["Body"] = '';
        }
        if(!array_key_exists("AltBody",$arrayable)) {
     
            $arrayable["AltBody"] = '';
        }
        try {
     

            //Recipients
            $this->mail->setFrom($this->from, $this->fromName);
            $this->mail->addAddress($arrayable["sendTo"]);     // Add a recipient

            // Content
            $this->mail->isHTML($arrayable['isHTML']);                                  // Set email format to HTML
            $this->mail->Subject = $arrayable['Subject'];
            $this->mail->Body    = $arrayable['Body'];
            $this->mail->AltBody = $arrayable['AltBody'];

            $this->mail->send();
//            echo 'Message has been sent';
            return true;
        } catch (Exception $e) {
     
//            echo "Message could not be sent. Mailer Error: {$this->mail->ErrorInfo}";
            return false;
        }
    }
}

你可能感兴趣的:(PHP,ThinkPHP)