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

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

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

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

05/02/2019

DateTimePicker – удобный и легкий в использовании плагин для быстрой подстановки даты и времени в поля ввода.

Плагин DateTimePicker для сайта - инструкция, настройка, инициализация
Плагин маски ввода для input - jquery maskedinput - инструкция, настройка, инициализация

23/01/2019

В этой статье будет рассмотрено решение этой задачи с использованием плагина Masked Input, который отличается простотой и удобством в использовании.

Плагин маски ввода для input - jquery maskedinput - инструкция, настройка, инициализация
Публикация на стене Вконтакте средствами API - кросспостинг

24/03/2017

Метод который мы рассмотрим ниже позволяет размещать информацию на страницах любого пользователя или группы к которому имеет доступ авторизованному пользователю.

Публикация на стене Вконтакте средствами API - кросспостинг
Чтение excel на PHP - основные методы класса PHPExcel

03/11/2016

С помощью PHPExcel можно производить чтение и запись информации в файлы, форматировать их содержимое, выполнять операции с формулами, стилями и т.д.

Чтение excel на PHP - основные методы класса PHPExcel
TinyMCE вырезает теги - исключения для тегов TinyMCE

21/09/2016

Текстовый редактор TinyMCE в визуальном режиме при стандартной конфигурации обрезает некоторый теги и свойства.

TinyMCE вырезает теги - исключения для тегов TinyMCE
Cвойства и методы TinyMCE - вставка тегов, вывод значений

21/09/2016

Научимся вставлять теги в выделенный фрагмент текста, вставлять теги на место селектора в тексте и получать средствами JS HTML код отредактированного текста и текст без HTML сущностей.

Cвойства и методы TinyMCE - вставка тегов, вывод значений
Установка и настройка TinyMCE - инициализация и параметры

21/09/2016

Как вы уже поняли, редактор является платформенным Javascript редактором HTML кода, т.е. WYSIWYG редактором для сайтов и веб приложений. Разработчиком этого полезного продукта является компания Moxiecode Systems AB.

Установка и настройка TinyMCE - инициализация и параметры
Установка и настройка jCarousel - параметры и методы

20/09/2016

В статье мы: познакомимся с каруселью; научимся интегрировать ее на свой сайт; познакомимся с основными параметрами инициализации; рассмотрим самые популярные свойства и методы классов jCarousel

Установка и настройка jCarousel - параметры и методы