Пакет mail предназначен для отправки почты, как с помощью известной библиотеки PHPMailer, так и стандартными средствами ОС. Помимо этого, опционально, пакет предоставляет средства для использования шаблонов MACRO в качестве шаблонов писем, а так же средства отладки.
$mailer = new lmbMailer();
$recipients = array(
array("name" => "Sam", "address" => "[email protected]"),
"[email protected]"
);
$sender = '[email protected]';
$subject = 'new movie';
$text = 'Hello';
$html = '<h1>Hello</h1>';
$mailer->addAttachment('/www/attachments/movie.flv', $name = "Super movie");
$mailer->embedImage('/www/images/thumb.png', $cid = mt_rand(), $name=" Thumb for super movie");
//отправка текстового письма
$mailer->sendPlainMail($recipients, $sender, $subject, $text);
//отправка html письма
$mailer->sendHtmlMail($recipients, $sender, $subject, $html, $text, $charset = 'cp-1251');
##Конфигурация lmbMailer Находится в settings/mail.conf.php
В старых версиях пакета для конфигурирования lmbMailer использовались константы, заданные с помощью директив define(), а так же функциями lmb_env_set() и lmb_env_setor(). Этот способ хотя и поддерживается, но настоятельно не рекомендуется.
Опция конфига | Константа | Значение по умолчанию | Описание |
---|---|---|---|
use_phpmail | LIMB_USE_PHPMAIL | false | использовать mail() (вместо него будет использоваться SMTP) |
smtp_host | LIMB_SMTP_HOST | 'localhost' | хост SMTP сервера |
smtp_port | LIMB_SMTP_PORT | '25' | порт SMTP сервера |
smtp_auth | LIMB_SMTP_AUTH | false | использовать ли авторизацию на SMTP сервере |
smtp_user | LIMB_SMTP_USER | - | имя пользователя SMTP |
smtp_password | LIMB_SMTP_PASSWORD | - | пароль SMTP |
smtp_secure | LIMB_SMTP_SECURE | - | защита соединения ('', 'tls' или 'ssl') |
Также при создании объекта lmbMailer можно передать массив c опциями в конструктор. Названия параметров этого массива совпадают с названиями опций конфига. Значения, переданные в конструктор, перекрывают значения взятые из mail.conf.php.
$custom_config = array(
'smtp_user' => 'user',
'smtp_password' => 'password'
);
$mailer = new lmbMailer($custom_config);
Например мы хотим отправить пользователю сообщение, что он удачно купил трактор в нашем магазине. Создаем шаблон письма.
Поздравляем с покупкой трактора {#tractor.title}
Поздравляем!
Вы, или ваш тайный доброжелатель, только что купили новенький {#tractor.title} на нашем замечательном сайте vtraktore.ru.
По смешной цене "{$#tractor.price}" рублей.
Посмотреть на это чудо инженерного гения можно на странице {$#tractor.profile_url}.
<h2>Поздравляем!</h2>
<p>Вы, или ваш тайный доброжелатель, только что купили новенький {#tractor.title} на нашем замечательном сайте vtraktore.ru.</p>
<p>По смешной цене "{$#tractor.price}" рублей.</p>
Посмотреть на это чудо инженерного гения можно на странице <a href="{$#tractor.profile_url}">{$#tractor.profile_url}</a>.
Шаблон состоит из трех частей: темы письма, txt-части и html-части (не обязательной). Части разделяются символом \n\n. Назовем шаблон tractor_sold.phtml и поместим его в директорию _mail, в директории шаблонов (что-то типа template/_mail/tracor_sold.phtml).
Приступим непосредственно к отправке:
$tractor = new stdClass();
$tractor->title = 'Советский турбовинтовой мирный трактор, среднего радиуса действия';
$tractor->price = 4999999;
$tractor->profile_url = 'http://lurkmore.ru/Мирный_советский_трактор';
$service = new lmbMailService('tractor_sold');
$service->set('tractor', $tractor);
$service->sendMailTo('[email protected]');
Мейлеры это объекты, которые отвечают за непосредственно отправку письма ( интерфейс lmbBaseMailerInterface). В данный момент поддерживаются следующие мейлеры:
- lmbMailer — «честный» мейлер: отправляет письмо в соответствии с настройками mail-конфига
- lmbFileMailer — создает файлы, с содержимым писем, во временной папке limb (по умолчанию это <PROJECT_DIR>/var )
- lmbMemoryMailer — не отсылает писем, а хранит их внутри себя. Удобен для тестов. Для доступа к «отправленным» письмам имеются методы getMailContents() и clearMailContents()
- lmbFirePHPMailer — отправляет письма в консоль firefox-расширения FireBug, используя библиотеку FirePHP
- lmbResponseMailer — записывает текст письма в объект-ответ (lmbHttpResponse)
Выбор мэйлера для lmbMailService
В данный момент выбор мейлера происходит в самом lmbMailService. В будущем инстанцирование и настройка мэйлера будет вынесена в toolkit.
Выбор мэйлера происходит на основе переменной mode конфигурационного файла settings/mail.conf.php следующим образом:
Значение | Описание |
---|---|
null | По умолчанию. Используется lmbMailer |
testing | Используется lmbMemoryMailer |
devel | Используется lmbResponseMailer |