📧 Mail — Отправка писем в PageBlocks
Класс Mail предназначен для формирования и отправки писем с использованием стандартного сервиса modMail в MODX. В PageBlocks он упрощает работу с почтой и поддерживает Fenom-шаблоны для генерации содержимого.
📌 Назначение
Mail оборачивает работу с modMail и позволяет настраивать все параметры письма через цепочку методов. Тело письма можно задавать напрямую или генерировать через Fenom-шаблон.
⚙️ Дефолтные значения
При создании объекта Mail автоматически подтягиваются некоторые параметры из системных настроек MODX:
| Свойство | Значение по умолчанию |
|---|---|
from | emailsender из системных настроек MODX |
fromName | site_name из системных настроек MODX |
sender | emailsender из системных настроек MODX |
isHtml | true — письма отправляются в формате HTML |
Пример:
$mail = Mail::to('user@example.com');
// $mail->from будет равен $modx->getOption('emailsender')✅ Быстрый пример
use Boshnik\PageBlocks\Support\Mail;
Mail::to('recipient@example.com')
->subject('Добро пожаловать')
->message('<p>Спасибо за регистрацию!</p>')
->send();🗂️ Методы класса
➡️ Mail::to(string $email): Mail
Указывает адрес получателя.
➡️ subject(string $text): Mail
Устанавливает тему письма.
➡️ message(string $html): Mail
Задаёт тело письма напрямую (HTML или текст).
➡️ view(string $tpl, array $data = []): Mail
Рендерит письмо через Fenom-шаблон и переданные данные.
Пример:
Mail::to('user@example.com')
->subject('Ваш заказ')
->view('file:emails/order', ['order' => $order])
->send();➡️ attach($file): Mail
Прикрепляет файл к письму.
->attach([
'url' => MODX_BASE_PATH . 'assets/docs/contract.pdf',
'name' => 'Договор.pdf'
]);➡️ replyTo(string $email): Mail
Устанавливает адрес для ответа.
➡️ cc(string $email): Mail
Добавляет адресата в копию.
➡️ bcc(string $email): Mail
Добавляет скрытую копию.
➡️ from(string $email, string $name = ''): Mail
Изменяет отправителя и имя.
➡️ sender(string $email): Mail
Изменяет MAIL_SENDER.
➡️ setHTML(bool $html = true): Mail
Указывает, в каком формате отправлять письмо (HTML или plain text).
➡️ send(string $to = '', string $subject = '', string $message = ''): bool
Отправляет письмо.
Возвращает true при успехе и логирует ошибку в MODX при неудачной отправке.
🗂️ Пример: Fenom + вложение + CC/BCC
Mail::to('user@example.com')
->subject('Ваш заказ принят')
->view('emails/order', ['order' => $order])
->attach([
'url' => MODX_BASE_PATH . 'assets/invoices/invoice.pdf',
'name' => 'Счет-фактура.pdf'
])
->cc('manager@example.com')
->bcc('admin@example.com')
->send();📝 Логирование ошибок
Если письмо не удалось отправить, в системный лог MODX (core/cache/logs/error.log) будет записана ошибка с уровнем ERROR и префиксом [Mail].
📚 Итог
Mail— удобный класс для отправки писем с Fenom-шаблонами и вложениями.- Использует настройки MODX для значений
from,fromNameиsender. - Позволяет легко настраивать адреса, копии и формат отправки.