Блог разработчиков

Все разделы | CMS Joomla 2.5 | Общее | PHP | Javascript + jQuery

Отправка писем в системе управления Joomla

10 мая 2015

Подключение объекта

Получение объекта JMail из объекта JFactory.

$mailer = JFactory::getMailer();

Установка отправителя письма

Функция принимает массив с email адресом и именем отправителя. Обычно в качестве отправителя устанавливается сам веб-сайт, в системе управления joomla реквизиты сайта-отправителя находятся на странице Общие настройки, вкладка "Сервер", заголовок блока "Настройка почты". Установить отправителя можно самостоятельно. Представляю два примера установки отправителя:

1. отправитель - сам сайт

$config = JFactory::getConfig();
$sender = array(
    $config->get( 'mailfrom' ),
    $config->get( 'fromname' )
);
 
$mailer->setSender($sender);

2. отправитель задан самостоятельно

$sender = array(
    'from@email.ru',
    'Имя отправителя'
);
 
$mailer->setSender($sender);

Установка получателя или получателей

Для установки получателей достаточно записать перечень email адресов в массив и присвоить его определенной переменной, затем передать эту переменную переменной $mailer.

$recipient = array( 'person1@email.ru', 'person2@email.ru', 'person3@email.ru' );
$mailer->addRecipient($recipient);

Создание шаблона письма

В шаблон письма как обычно входитят следующие параметры: тема, текст письма, вложения. Все эти параметры задаются специальными функциями, например, для того чтобы установить тему сообщения достаточно вызвать функцию setSubject

$mailer->setSubject('Ваша тема сообщения');

Чтобы установить текст письма необходимо вызвать функцию setBody

$body   = "Текст вашего письма";
$mailer->setBody($body);

Важно. По умолчанию формат письма text/plain. Для установки формата text/html необходимо вставить передать переменной $mailer, что текст письма должен иметь формат text/html, это можно сделать следующим образом:

$mailer->isHTML(true);

Чтобы прикрепить вложенный файл к письму достаточно вызвать функцию addAttachment и указать файл который необходимо прикрепить.

$mailer->addAttachment(JPATH_SITE.'/docs/document.pdf');

JPATH_SITE - это констаната в cms joomla, о константах вы можете прочитать здесь.

Отправка письма

За отправку письма отвечает функция Send. Если функция вернет значение true значит письмо было успешно отправлено, иначе возвращается JError объект. В первом случае системное сообщение не выводится, его можно сделать самостоятельно с помощью этой статьи.

$send = $mailer->Send();
if ( $send !== true ) {
    echo 'Ошибка отправки письма: ' . $send->__toString();
} else {
    echo 'Письмо успешно отправлено';
}

Если все было сделано верно, то ваше писбмо получат все получатели указанные в переменной $recipient.