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

25.04.2017
12445
Теги: MODx RevoAPI

В данной статье мы вам расскажем, как отправить письмо на электронную почту с помощью 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 Число голосов: 3
5
5
1
3

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

  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 при отправке письма?

          Наши клиенты

          Многие компании уже доверяют нам. Будьте в их числе!

          Хотите реализовать проект?

          Контакты

          Напишите нам - мы расскажем вам много интересного!


          Пермь, шоссе Космонавтов 252, офис 218