Skip to content

📧 Mail — Отправка писем в PageBlocks

Класс Mail предназначен для формирования и отправки писем с использованием стандартного сервиса modMail в MODX. В PageBlocks он упрощает работу с почтой и поддерживает Fenom-шаблоны для генерации содержимого.

📌 Назначение

Mail оборачивает работу с modMail и позволяет настраивать все параметры письма через цепочку методов. Тело письма можно задавать напрямую или генерировать через Fenom-шаблон.

⚙️ Дефолтные значения

При создании объекта Mail автоматически подтягиваются некоторые параметры из системных настроек MODX:

СвойствоЗначение по умолчанию
fromemailsender из системных настроек MODX
fromNamesite_name из системных настроек MODX
senderemailsender из системных настроек MODX
isHtmltrue — письма отправляются в формате HTML

Пример:

php
$mail = Mail::to('user@example.com');
// $mail->from будет равен $modx->getOption('emailsender')

✅ Быстрый пример

php
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-шаблон и переданные данные.

Пример:

php
Mail::to('user@example.com')
    ->subject('Ваш заказ')
    ->view('file:emails/order', ['order' => $order])
    ->send();

➡️ attach($file): Mail

Прикрепляет файл к письму.

php
->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

php
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.
  • Позволяет легко настраивать адреса, копии и формат отправки.

© PageBlocks 2019-present