说一下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;
}
}
}