Отправка писем в шаблоне
Зависимости
Компонент добавляет возможность отправлять письма через красивый шаблон.
Отправка производится через функцию SendMailTpl(). Эта функия напоминает функцию SendMail() и повторяет многие её параметры.
Сигнатура этой функции:
SendMailTpl($template, $templateParams, $to, $subject, $config = array(), $additionalHeaders = '', $files = array(), $priority = SENDMAIL_PRIORITY_NORMAL)
- * $template - относительный путь к компоненту-шаблону. По умолчанию в компонент включен шаблон mail_tpl/default;
- * $templateParams - параметры которые будут переданы в компонент-шаблон. В этих параметрах обычно задается заголовок и текст сообщения и другие необходимые параметы. Для шаблона по-умолчанию mail_tpl/default это два параметра title и text;
- * $to - один адресс или массив адресов для отправки;
- * $subject - тема письма. Этот заголовок будет отобразаться в списке входящих у получателя;
- $config - переопределенные параметры стандартной конфигурации. Например информация об отправителе;
- $additionalHeaders - дополнительные хедеры если требуются;
- $files - список файлов которые требуется отправить с письмом;
- $priority - приоритет письма для почтового сервера (SENDMAIL_PRIORITY_LOW, SENDMAIL_PRIORITY_NORMAL, SENDMAIL_PRIORITY_HIGH);
Функция возвращает количество успешно отправленных писем.
Примеры использования:
$params = array ( "title" => Post("title"), "text" => Post("text") ); $ret = SendMail("mail_tpl/default", $params, "mail@itkd.ru", "Заголовок"); $ret = SendMail("mail_tpl/default", $params, "mail@itkd.ru", "Заголовок", array("sender" => "example-sender@example.com")); $ret = SendMail("mail_tpl/default", $params, "mail@itkd.ru", "Заголовок", array("sender" => array("example-sender@example.com", "I am sender")));
Шаблоны писем
Создание компонента-шаблона аналогично созданию обычного компонента. В нем тоже можно использовать g_lang массив, вставлять переменные и подключать css файлы.
Но задание css стилей отличается от обычного.
Как известно в шаблон письма нельзя включать css файлы (и вообще прописывать стилевые классы), а все стили нужно задвать inline.
При этом, во время создания шаблона, для корректной верстки письма желательно использовать таблицы, а у всех элементов верстки сбрасывать стили. Дополнительно у картинок нужно задать размер.
Именно поэтому мы не инклудим css файлы, а считываем все классы и применяем прописанные в классах стили к элементам через аттрибут style.
Изза этого в css файлах можно задвать стили только для отдельных классов и без вложенности.
Плюс компонент дополнительно производит сборос атрибутов у следующих элементов (при условии что эти атрибуты не заданы):
- img - style="display: block", border=0;
- table - cellpadding=0, cellspacing=0, border=0, style=""border-collapse: collapse";
- td - align=left, valign=top, style="padding: 3px 4px";
- th - align=left, valign=top, style="padding: 3px 4px";
- body - style="margin: 0; padding: 0";
Рекомендуем почитать следующюю статью по этой теме:
http://habrahabr.ru/post/180013/
Как уже упоминалось в компонент уже включен стандартный шаблон, который находится файле tpl/mail_tpl/default.php