воскресенье, 14 декабря 2008 г.

Swift - мощный PHP Mailer или библиотека для отправки почты

Большинство WEB-проектов требуют работы с почтой. На языке PHP есть инструменты для отсылки почты, но они явно не блещут функционалом. В основном, приходится писать самому мини-библиотеки для работы с e-mail рассылкой. Что касается меня, то я использовал в основном класс PHPMailer.

Совсем недавно в интернете набрёл на довольно интересный класс, предназначенный для работы с почтой, называется Swift (http://www.swiftmailer.org/). Даже наверно будет более правильно назвать его не классом, а полноценной библиотекой для работы с почтой на PHP, потому что она включает в себя несколько отдельных классов связанных между собой.

Swift – это библиотека, полностью написанная на ООП, предназначенная для отсылки почты из PHP скриптов и приложений. Понятное дело, что она не использует стандартную функцию mail(), у которой самым слабым местом является высокое потребление серверных ресурсов во время рассылки нескольких сообщений. Swift напрямую работает с SMTP сервером или MTA (Mail Transfer Agent), что позволяет ему делать рассылку быстро и эффективно.

Ранние версии Swift были сопоставимы с классом PHPMailer, но сейчас библиотека переросла в полностью отлаженный программный комплекс для рассылки почты. Несмотря на богатый функционал, интерфейс остался интуитивно понятным и доступным для освоения.

Самым главным достоинством, на мой взгляд, которое отличает эту библиотеку от остальных – это поддержка плагинов. Механизм взаимодействия плагинов основан на событиях. Они обеспечивают потрясающую гибкость библиотеке Swift. За время развития библиотеки она была неоднократно серьёзно переписана, как утверждает автор, и сейчас максимально совместима с RFC 2822.

Работать со Swift очень легко и удобно, чувствуется детальная проработка интерфейса. В доказательство приведу простенький пример отсылки HTML e-mail:

< ?php

//подключаем библиотеку
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";

//создаём объект Swift
$swift =& new Swift(new Swift_Connection_SMTP("server.tld", 25));

//формируем непосредственно само письмо
$message =& new Swift_Message("Здесь тема письма", "Непосредственно тело письма в виде HTML текста");
//задаём тип содержимого письма как text/html
$message->setContentType("text/html");

//отсылка письма
if ($swift->send($message, "to@domain.my", "from@home_domain.my"))
{
  echo "Письмо успешно отослано";
}
else
{
  echo "Ошибка отсылки email";
}
 
//Очень желательно это делать, когда работа с почтой закончена
$swift->disconnect();



Напоследок приведу веские аргументы, почему этот класс для работы с почтой лучше остальных конкурентов в своём классе:

  • поддерживается постоянное соединение, увеличивающее быстродействие;
  • расширяемые типы соединений, которые задаются пользователем;
  • поддерживаются разные типы аутентификации SMTP (LOGIN, PLAIN, MD5-CRAM, POP Before SMTP);
  • есть поддержка SSL и TLS (необходимая для Gmail серверов);
  • полный контроль над заголовками и требованиями RFC 2822;
  • поддержка локализации (интернационализация i18n);
  • есть баланс загрузки и управление потоками, поставляется с монитором полосы пропускания;
  • удобная работа с вложениями, корректная работа с любыми типами файлов и любым количеством вложений;
  • полностью включена библиотека MIME 1.0;
  • поддержка пакетной обработки почты;
  • умеет отправлять в письмах вложения любого размера, даже если выставлено 8Mb ограничение в PHP;
  • присутствует защита от header injection;
  • есть возможность выставлять приоритет сообщения;
  • есть анти-flooding защита, необходимая для серверов с ограничением количества писем с одного соединения;
  • и самое главное, на мой взгляд, - расширяемая система плагинов, которые легко писать.

Комментариев нет:

Отправить комментарий

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting