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