Инструкция SMTP PHPMAILER. Свойства и методы класса

Любой backend программист php сталкивается с задачей автоматизации почтовой рассылки на веб сайтах и многие, кто сталкивался с данной задачей впервые, вставали перед ключевым вопросом: "Писать или не писать smtp клиент с нуля?".

Любой backend программист php сталкивается с задачей автоматизации почтовой рассылки на веб сайтах и многие, кто сталкивался с данной задачей впервые, вставали перед ключевым вопросом: "Писать или не писать smtp клиент с нуля?". Если вы решите самостоятельно реализовать функционал smtp клиента на языке php, да и любом другом аналогичном языке, то вы столкнетесь с весьма рутинной и скучной работой, т.к. основный механизм работы с smtp серверами заключается в обмене текстовыми сообщениями и ничем больше. Но, к счастью, этого и не требуется! Все что нужно, уже написано в герое сегодняшней статьи — класс PHPMailer.

Класс PHPMailer дает нам возможность легко и быстро писать скрипты рассылки почтовых уведомлений с гибкой системой отладки данного скрипта. Скрипт написан на языке программирования PHP и поддерживает стандарты криптографического шифрования при обмене сообщениями с сервером TLS\SSL.

Для использования PHPMailer на своем сервере вам необходима возможность подключения к внешним SMTP серверам при помощи PHP.

Возможности SMTP клиента PHPMailer.

  • Отправка E-mail с множественными адресатами;
  • Поддерживает 8 бит, base64, бинарного режима, и пригодного для печати формата;
  • SMTP авторизация на стороне сервера;
  • Перенос слов (word wrap);
  • Отправлять сообщения в виде HTML;
  • Библиотека проверена на множестве SMTP серверах: Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier;
  • Работает на любой win32 и *nix платформе;
  • Гибкость отладочной работы - реализована система вывода подробнейшего лога общения с SMTP сервером;
  • Определяемые вручную заголовки писем;
  • Совмещение нескольких сообщений и вложений;
  • Встроенная поддержка изображений.
  • Отправка писем различными способами: через smtp сервер, утилитой sendmail и Qmail, функцией mail()

 Установка и первоначальная подготовка SMTP клиента PHPMailer к работе

Прежде всего необходимо скачать свежую версию SMTP библиотеки: https://github.com/PHPMailer/PHPMailer

Затем распаковываем скачанный архивчик и изучаем содержимое SMTP библиотеки PHPMailer: 

/docs:                  // Директория с документацией библиотеки PHPMailer
/examples:              // Директория с примерами работы библиотеки PHPMailer
/extras:                // Дополнительные полезности при работе с почтовыми серверами
/language:              // Директория с переводом Debug
/test:                  // Скрипты тестирование библиотеки PHPMailer
class.phpmailer.php     // Класс для создания и отправки писем различными методами
class.pop3.php          // Класс для работы с POP3
class.smtp.php          // Класс для работы с SMTP
PHPMailerAutoload.php   // Файл автоматической подгрузки классов PHPMailer

Все остальное не несет функциональной нагрузки и предоставляется в качестве информационного дополнения к библиотеке PHPMailer.

Ура! Теперь мы знаем что мы имеем при распаковке библиотеке. Дело осталось за малым — разобраться как с этим делом работать!

Многие любят создавать дополнительно файл конфигурации для SMTP клиента PHPMailer и в дальнейшем использовать его. Я тоже приверженец этой традиции и предлагаю на рассмотрение пример такого файла.

config.php: 

$__smtp = array(
    "host" => 'smtp.host.com', // SMTP сервер
    "debug" => 2, // Уровень логирования
    "auth" => true, // Авторизация на сервере SMTP. Если ее нет - false
    "port" => '25', // Порт SMTP сервера
    "username" => 'mail@host.com', // Логин запрашиваемый при авторизации на SMTP сервере
    "password" => '123', // Пароль
    "addreply" => 'reply@host.com', // Почта для ответа
    "secure" => 'ssl', // Тип шифрования. Например ssl или tls
    "mail_title" => 'Заголовок вашего письма!', // Заголовок письма
    "mail_name" => 'Имя отправителя' // Имя отправителя
); 

 Заливаем все это богатство на наш хостинг и готовимся к первой инициализации и пробной отправке первого письма при помощи SMTP клиента PHPMailer.

Подключаем и инициализируем класс PHPMailer

Для подключения класса PHPMailer необходимо подключить файлы PHPMailerAutoload.php и config.php

require_once('/путь/до/файла/config.php'); //Файл конфигурации для вашего smtp сервера
require_once('/путь/до/файла/PHPMailerAutoload.php'); //Файл автоматической подгрузки классов PHPMailer

 Далее происходит процесс конфигурации SMTP клиента PHPMailer и отправка письма. Пример конфигурации вы можете посмотреть в директории с примерами /examples или воспользоваться нашим примером конфигурации и отправки письма при помощи класса PHPMailer.

Пример конфигурации SMTP клиента PHPMailer:

Данный пример демонстрирует работу библиотеки PHPMailer в качестве SMTP клиента.

require_once('/путь/до/файла/config.php'); //Файл конфигурации для вашего smtp сервера
require_once('/путь/до/файла/PHPMailerAutoload.php'); //Файл автоматической подгрузки классов PHPMailer

try{
    $mail = new PHPMailer(true); // Создаем экземпляр класса PHPMailer

    $mail->IsSMTP(); // Указываем режим работы с SMTP сервером
    $mail->Host       = $__smtp['host'];  // Host SMTP сервера: ip или доменное имя
    $mail->SMTPDebug  = $__smtp['debug'];  // Уровень журнализации работы SMTP клиента PHPMailer
    $mail->SMTPAuth   = $__smtp['auth'];  // Наличие авторизации на SMTP сервере
    $mail->Port       = $__smtp['port'];  // Порт SMTP сервера
    $mail->SMTPSecure = $__smtp['secure'];  // Тип шифрования. Например ssl или tls $mail->CharSet="UTF-8"; // Кодировка обмена сообщениями с SMTP сервером $mail->Username = $__smtp['username']; // Имя пользователя на SMTP сервере $mail->Password = $__smtp['password']; // Пароль от учетной записи на SMTP сервере $mail->AddAddress('whoto@example.com', 'John Doe'); // Адресат почтового сообщения $mail->AddReplyTo($__smtp['addreply'], 'First Last'); // Альтернативный адрес для ответа $mail->SetFrom($__smtp['username'], $__smtp['mail_title']); // Адресант почтового сообщения $mail->Subject = htmlspecialchars($__smtp['mail_title']); // Тема письма $mail->MsgHTML('Текст сообщения!'); // Текст сообщения $mail->Send(); return 1; } catch (phpmailerException $e) { return $e->errorMessage(); }

Поздравляю! Теперь вы имеете четкое представление о возможностях SMTP библиотеки PHPMailer и готовы к реализации любых почтовых рассылок при помощи языка программирования PHP!

Выводы

Мы рекомендуем библиотеку PHPMailer в качестве простого и надежного класса для работы с SMTP серверами. Данная библиотека позволит быстро организовать рассылку практически любой сложности, провести гибкую отладку работы скриптов.

Мы неоднократно использовали и продолжаем использовать данную библиотеку в своих проектах!

Всем спасибо за внимание!


Выберите город