composer require phpmailer/phpmailer
<?php
namespace app\service\email;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use think\facade\Log;
/**********邮件*********/
class Email
{
/**
* Notes: 发送邮件
* Date: 2023-12-14
* Time: 13:32
* @param $receiver_email //收件人邮箱
* @param $sender_name //发件人名称
* @param $receiver_name //收件人名称
* @param $email_subject //邮件主题
* @param $body //邮件内容
* @param false $is_html //是否为html格式
* @return bool
*/
public function send($receiver_email, $sender_name, $receiver_name, $email_subject, $body, $is_html = false)
{
try {
$mail = new PHPMailer();
$mail->isSMTP(); //使用smtp鉴权方式发送邮件
$mail->SMTPAuth = true; // smtp需要鉴权 这个必须是true
$mail->CharSet = 'utf8'; //设置编码
$mail->Host = env('email.host'); //163邮箱smtp邮箱
$mail->Username = env('email.sender_email'); //发送方邮箱
$mail->Password = env('email.sender_pwd'); //发送方smtp密码
$mail->SMTPSecure = 'ssl'; //使用的协议
$mail->Port = env('email.port'); //邮箱接收的端口号
$mail->isHTML($is_html); // 邮件正文是否为html编码
$mail->setFrom(env('email.sender_email'), $sender_name); //定义邮件及标题(不同邮件标题显示不一致)
$mail->addAddress($receiver_email, $receiver_name); //要发送的地址和设置地址的昵称
$mail->Subject = $email_subject; //添加该邮件的主题
$mail->Body = $body; //该邮件内容
if ($mail->send()) {
return true;
} else {
Log::channel('email')->write($mail->ErrorInfo);
return false;
}
}catch (Exception $e){
return false;
}
}
}
.env 文件
[EMAIL]
host = ''
sender_email = ''
sender_pwd = ''
port = ''