Все разделы | CMS Joomla 2.5 | Общее | PHP | Javascript + jQuery
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.