69 lines
2.3 KiB
PHP
69 lines
2.3 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
namespace app\common\utils\email;
|
|||
|
|
|
|||
|
|
use app\common\model\InquiryLog;
|
|||
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|||
|
|
use PHPMailer\PHPMailer\Exception;
|
|||
|
|
use support\Db;
|
|||
|
|
use support\Log;
|
|||
|
|
|
|||
|
|
class MailSend
|
|||
|
|
{
|
|||
|
|
/**
|
|||
|
|
* 发送邮件
|
|||
|
|
*
|
|||
|
|
* @param string|array $to 收件人邮箱(单个字符串或多个数组)
|
|||
|
|
* @param string $subject 邮件主题
|
|||
|
|
* @param string $body 邮件内容(HTML)
|
|||
|
|
* @param array $attachments 附件路径数组 [['path' => '/path/file', 'name' => '文件名']]
|
|||
|
|
* @return bool
|
|||
|
|
*/
|
|||
|
|
public static function send($to, $subject, $body, $attachments = [])
|
|||
|
|
{
|
|||
|
|
$mail = new PHPMailer(true);
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
// 服务器配置
|
|||
|
|
$mail->isSMTP();
|
|||
|
|
$mail->Host = config('imap.smtp_xyh.host'); // SMTP服务器
|
|||
|
|
$mail->SMTPAuth = true;
|
|||
|
|
$mail->Username = config('imap.smtp_xyh.username'); // 邮箱账号
|
|||
|
|
$mail->Password = config('imap.smtp_xyh.password'); // 邮箱密码/授权码
|
|||
|
|
$mail->SMTPSecure = config('imap.smtp_xyh.encryption'); // 加密方式 tls/ssl
|
|||
|
|
$mail->Port = config('imap.smtp_xyh.port'); // 端口
|
|||
|
|
|
|||
|
|
// 发件人
|
|||
|
|
$mail->setFrom(config('imap.smtp_xyh.from_address'), config('imap.smtp_xyh.from_name'));
|
|||
|
|
|
|||
|
|
// 收件人(支持单个或多个)
|
|||
|
|
if (is_string($to)) {
|
|||
|
|
$mail->addAddress($to);
|
|||
|
|
} elseif (is_array($to)) {
|
|||
|
|
foreach ($to as $email) {
|
|||
|
|
$mail->addAddress($email);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 附件
|
|||
|
|
foreach ($attachments as $file) {
|
|||
|
|
$mail->addAttachment($file['path'], $file['name'] ?? '');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 内容
|
|||
|
|
$mail->isHTML(true);
|
|||
|
|
$mail->CharSet = 'UTF-8';
|
|||
|
|
$mail->Encoding = 'base64';
|
|||
|
|
$mail->Subject = mb_encode_mimeheader($subject, 'UTF-8', 'B', "\r\n");
|
|||
|
|
$mail->Body = $body;
|
|||
|
|
// $mail->AltBody = strip_tags($body); // 纯文本备用
|
|||
|
|
// $mail->AltBody = $altbody;
|
|||
|
|
|
|||
|
|
$mail->send();
|
|||
|
|
return true;
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
Log::error("邮件发送失败: " . $e->getMessage());
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|