MODX 25.04.2017 14194 1 минута

Отправка писем в MODx Revo с помощью API

Отправка писем в MODx Revo с помощью API

В данной статье мы вам расскажем, как отправить письмо на электронную почту с помощью API MODx Revolution. Думаем, бывалые разработчики уже сталкивались с ограничениями FormIt и данная статья будет вам полезной.

В MODx Revolution за отправку писем отвечает абстрактный класс modMail, с помощью которого можно легко отправлять письма.

Пример

Приведем пример кода, который отправит письмо с ящика me@example.com на ящик user@example.com письмо, содержание которого находится в чанке myEmailTemplate.


$message = $modx->getChunk('myEmailTemplate');
 
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'me@example.org');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Johnny Tester');
$modx->mail->set(modMail::MAIL_SUBJECT,'Check out my new email template!');
$modx->mail->address('to','user@example.com');
$modx->mail->address('reply-to','me@xexample.org');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();

Как видите все достаточно просто. Кроме того, мы можем отправить письмо сразу на несколько адресов, используя такую конструкцию:


$modx->mail->address('to','user@example.com');
$modx->mail->address('to','mom@example.org');

Также можем добавить к письму вложения такой строкой:


$modx->mail->attach($attachment);

Примечание: в переменной $attachment хранится абсолютный путь до файла от корня сервера.

Тело письма вы можете легко изменять с помощью функции getChunk, про которую мы вам в дальнейшем обязательно расскажем.

Кроме того, используя события системы и компонентов вы можете легко уведомлять администратора сайта о всевозможных изменениях.

В статье были использованы материалы из официальной документации к CMS MODx Revolution.

Отправка писем в MODx Revo с помощью API

Число голосов: 0
5
1
0
Петропавловский Артем
Автор Петропавловский Артем

Основатель и ведущий разработчик DART Agency. Пишу о разработке, продажах и процессах в IT.

Комментарии (5)

  1. Николай 22 июня 2017, 11:16 # ↓ 0
    $modx->mail->address('to','user@example.com');
    $modx->mail->address('to','mom@example.org');
    Не рабочая конструкция, отправка происходит только на последний адрес. Как сделать отправку на несколько адресов?
    1. Петропавловский Артем 22 июня 2017, 11:21 # ↑ ↓ 0
      Должно работать. Протестируйте адреса по отдельности, бывает, что не приходит на некоторые почтовые сервисы.
    2. Андрей 15 января 2018, 18:28 # ↓ 0
      А как сделать чтобы отправка была через smtp?
      1. Николай 28 июня 2021, 21:18 # ↓ 0
        Здравствуйте. Можете рассказать более детально, как подключить сниппет, как вывести шаблон формы?
        1. Alexander Bykovsky 29 июня 2023, 15:22 # ↓ 0
          Добрый день.А как в чанк передать значения массива $_POST при отправке письма?

          Заказать звонок

          Оставьте контакты — мы перезвоним в течение 30 минут