Отправка писем в 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.

Оцените статью:

Проголосовало: 44

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

  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
      Должно работать. Протестируйте адреса по отдельности, бывает, что не приходит на некоторые почтовые сервисы.