waMailMessage. Обновление в работе с почтой
3 мая 2012В версии фреймворка 1.0.7 (уже доступна для загрузки) изменился инструментарий отправки почты. Теперь в состав ядра фреймворка входит библиотека Swift Mailer, и вся работа с почтой осуществляется на ее основе. В wa-system созданы классы-обертки, унаследованные от Swift. Обновленная статья документации по работе с почтой: http://www.webasyst.com/ru/framework/docs/dev/mail/
Вниманию разработчиков: Старые методы отправки почты более не работают.
Необходимо обновить методы и параметры, которые вы используете для отправки почты в ваших приложениях.
Напомню, что раньше работа с почтой осуществлялась через классы waMailMessage
и waMail
:
// Формирование объекта письма с адресатом $to, отправителем $from, // темой $subject и текстом $body $mail_message = new waMailMessage($to, $subject, $body, $from); // По умолчанию письмо формируется в HTML-формате. // Если требуется отправка письма в text/plain, необходимо это указать явно: $mail_message->setContentType('plain'); // Добавление получателей $mail_message->addTo('Вася Пупкин <vasya.pupkin@webasyst.com>'); $mail_message->addCc('Петя Васькин <petya.vaskin@webasyst.com>'); $mail_message->addBcc('Иван Карлович <ivan.karlovich@webasyst.com>'); // Добавление вложенного файла // $path — полный путь до файла на сервере // $filename — необязательный параметр: имя файла, которое будет отображаться в письме $mail_message->addAttachment($path, $filename); // Отправка письма $mail = new waMail(); $mail->send($mail_message); // Альтернативный способ отправки письма $mail_message->send(); // Альтернативный способ формирования и отправки простых писем: $mail = new waMail(); $mail->send($to, $subject, $body, $from);
Теперь отправка почты работает только через класс waMailMessage
. При обновлении ваших приложений внимательно обновите методы и параметры отправки, чтобы сообщения продолжали уходить адресатам:
$mail_message = new waMailMessage($subject, $body); // по умолчанию считается тело письма text/html
//Если нужно text/plain, то $mail_message = new waMailMessage($subject, $body, 'text/plain');
$mail_message->setFrom('noreply@webasyst.com', 'Робот');
$mail_message->setTo(array('vasya.pupkin@webasyst.com' => 'Вася Пупкин'));
Теперь отправителя и получателей необходимо укзывать в виде массива: array($email => $name)
Добавление вложений не изменилось:
$mail_message->addAttachment($path, $filename);
Отправка сообщения:
$mail_message->send();
Класс waMail
, который ранее использовался для отправки сообщения, в данный момент используется только для системных целей. Позже мы планируем написать по нему дополнительную документацию (класс позволит, например, переопределять транспорт при отправке отдельных сообщений).
В версии 1.0.7 фреймворк также научился отправлять письма через SMTP. О настройке SMTP читайте в документации.
Вышеописанные изменения выполнены в рамках работы над приложениями «Рассылки» и «Поддержка» (приложения в разработке).
12 комментариев
http://semver.org/
ответитьПрочтите, пожалуйста. Внимательно прочтите.
Сейчас фреймворк находится в альфа-версии и мы не гарантируем обратной совместимости (но в таких случаях мы всегда пишем об этом в блоге с описанием того, что изменилось). Некоторые вещи меняются, пересматриваются, улучшаются. Это неизбежно. И если бы мы меняли каждый раз первую цифру версии, то номер был бы уже больше 10.
ответитьКак только фреймворк будет хотя бы в бета версии, мы будем соблюдать правила версионности, тогда же появится changelog.
Момент уже упущен, но вообще правильней было бы иметь версию, начинающуюся с ноля. Версия один - заморозка API, сделано для версии 1.0.0 - будет работать в 1.9.99.
ответитьВ текущей системе версионности есть только один момент, который (по крайней мере мне лично) режет глаз — в том, что переходе на более старшую версию, например, с 1.0.6 на 1.0.7, не сбрасывается "следующий разряд", например, 13986. Этот последний разряд является номером билда и сейчас пишется в номер версии напрямую автоматически.
ответитьВ будущем, думаю, мы примем просто обновленный формат отображения версии. Например, вместо 1.0.7.13986 — 1.0.7 build 13986. Согласен, что так будет логичнее.
Вернемся к этому вопросу, когда фреймворк будет выходить из альфа-версии.
Спасибо! Поправили
ответитьСкажите пожалуйста,а почему вы решили использовать библиотеку Swift Mailer, а не свои наработки?
ответитьА зачем изобретать очередной велосипед? Swift Mailer - отличная и лёгкая библиотека, написанная на PHP5, которую легко интегрировать в любой проект. В ней уже реализованы практически все функции для отправки писем. Если нам чего будет в ней не хватать, то мы будем сами её улучшать (это же open source продукт).
ответитьЧтобы написать такую хорошую библиотеку с поддержкой всевозможных транспортов (SMTP, sendmail и т.д.), нужно очень много времени.
Примерно по этой же причине мы используем во фреймворке шаблонизатор Smarty3.
Спасибо за ответ.
ответитьСкажите пожалуйста, а с помощью этой новой библиотекой и вашим приложением "Рассылка" можно ли будет делать красивые рассылки с всякими заливками,бекграундами,картинками как это делают европейские компании, к примеру вот так вот красиво сегодня компания DHL поздравила нас с наступающим праздником:
ответитьhttp://s009.radikal.ru/i309/1205/5b/bbeae6a2ccf8.png
Ну и конечно же обратите внимание на ссылку:"Не видите изображение? Нажмите здесь." Происходит переход на сайт DHL,где в окне выводится тоже самое(как видим у данных рассылок есть страховка на случай если почтовик не поддерживает такие рассылки с стилизацией)
Ну и соответственно нужен очень хороший инструмент для создания таких рассылок
ответитьПриложение "Рассылки" запланировано. Там всё это будет реализовано.
ответитьДа, с помощью «Рассылок» можно будет создавать и красивые HTML, и обычные текстовые сообщения.
ответить