Ваш город Сиэтл
+7 4832590 366

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

2016-09-20

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

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

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

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

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

 Установка и первоначальная подготовка 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 серверами. Данная библиотека позволит быстро организовать рассылку практически любой сложности, провести гибкую отладку работы скриптов.

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

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

Лучший способ сказать автору «СПАСИБО» - рассказать друзьям или поделиться ссылкой!

Другие статьи по данной теме: