Files
mrbs-equbao-2026/lib/MRBS/Errors/Handler/PHPMailerHandler.php
T
人事系统开发 1ba6efd8ed MRBS 1.12.2 等保2.0二级整改完整提交
包含:登录失败锁定、90天密码有效期、30分钟会话超时、
强制改密、登录审计日志、屏幕水印、企业背景图、
备案信息固定底部、favicon、JS空集合保护、
会话过期体验优化(403 JSON)、display_errors 关闭、
固定 key 根治 Integrity check failed 等全部改动

注意:config.inc.php/.htaccess/.user.ini 含敏感信息,
通过 .gitignore 排除,勿推送到公开仓库。
2026-09-09 16:55:02 +08:00

65 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace MRBS\Errors\Handler;
use Monolog\Formatter\FormatterInterface;
use Monolog\Handler\MailHandler;
use Monolog\Logger;
use MRBS\Errors\Formatter\BrowserFormatter;
use MRBS\Errors\Formatter\ErrorLogFormatter;
use MRBS\Errors\Formatter\MailFormatter;
use PHPMailer\PHPMailer\PHPMailer;
class PHPMailerHandler extends MailHandler
{
private $mailer;
public function __construct(PHPMailer $mailer, $level = Logger::ERROR, bool $bubble = true)
{
parent::__construct($level, $bubble);
$this->mailer = $mailer;
}
protected function send(string $content, array $records): void
{
$mailer = $this->buildMessage($content, $records);
$mailer->send();
}
private function buildMessage(string $content, array $records): PHPMailer
{
$mailer = clone $this->mailer;
$record = $records[0];
if (isset($record['context']['details']))
{
$mailer->Subject = $record['context']['details'];
}
else
{
$mailer->Subject = $record['channel'] . '.' . $record['level_name'];
if (isset($record['extra']['file']))
{
$mailer->Subject .= ' in ' . $record['extra']['file'];
}
if (isset($record['extra']['line']))
{
$mailer->Subject .= ' at line ' . $record['extra']['line'];
}
}
$mailer->Body = $content;
return $mailer;
}
protected function getDefaultFormatter(): FormatterInterface
{
return new ErrorLogFormatter();
}
}