Как отправлять электронные письма с помощью библиотеки PHPMailer

PHPMailer будет альтернативой возможности mail(), которая используется намного чаще. Существует несколько сценариев, при которых функцию mail() оказывается не достаточно гибкой для PHP отправки почты.

Как отправлять электронные письма при помощи библиотеки PHPMailer

7 преимуществ использования PHPMailer

Существует целый ряд преимуществ использования PHPMailer для отправки электронных писем.

Объектно-ориентированный подход

Функцию mail() не будет объектно-ориентированной, в то время как PHPMailer имеет в себя объектно-ориентированный интерфейс.

Функция обойтись без заголовков и избежать грязного кода

В PHPMailer вам не придется писать грязный программный код и создавать заголовки, как в возможности mail().

Ограничения локального почтового сервера

Для возможности mail() необходим локальный почтовый сервер, тогда как PHPMailer осуществляет PHP отправку почты через SMTP. Кроме этого необходимы учетные данные.

Сообщение об ошибке на нескольких языках

Библиотека PHPMailer может отправлять сообщения об ошибках более чем на 40 языках.

SSL аутентификация

Библиотека PHPMailer в полном объеме поддерживает протокол SMTP и обеспечивает аутентификацию через SSL и TLS.

Обычная текстовая версия электронных писем

PHPMailer поддерживает отправку обычного текста для почтовых покупателей без поддержки HTML.

Поддержка сообщества

Существует активное сообщество поддержки библиотеки PHPMailer, которое постоянно актуализирует ее.

Приложения

PHPMailer используется популярными CMS, такими как Joomla, Drupal и WordPress.

Установка библиотеки PHPMailer:

Библиотека может быть установлена при помощи Composer, как показано ниже:

composer require phpmailer/phpmailer

Отправка электронной почты при помощи PHPMailer на локальном веб-сервере

Скрипт отправки формы на почту PHP:

<?php require_once "vendor/autoload.php"; //Объект PHPMailer$mail = new PHPMailer; //Имя и электронный адрес отправителя $mail->From = "from@yourdomain.com"; $mail->FromName = "Полное имя"; // Имя и электронный адрес получателя$mail->addAddress("получатель1@example.com", "Имя получателя");//Имя получателя необязательно$mail->addAddress("получатель1@example.com"); //Адрес на который получатель будет отвечать $mail->addReplyTo("reply@yourdomain.com", "Ответ"); //CC и BCC $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); //Отправка HTML или обычного текста $mail->isHTML(true); $mail->Subject = "Тема письма"; $mail->Body = "<i>Тело письма в HTML</i>";$mail->AltBody = "Это текстовая версия письма"; if(!$mail->send()) {echo "Ошибка: ". $mail->ErrorInfo; } else { echo "Сообщение успешно отправлено"; }if(!$mail->send()) { echo "Ошибка: ". $mail->ErrorInfo; } else { echo "Сообщение успешно отправлено"; }

Отправка электронной почты с вложениями:

Также при помощи PHPMailer можно осуществлять PHP отправку почты с вложением.

<?php require_once "vendor/autoload.php"; $mail = new PHPMailer; $mail->From = "from@yourdomain.com"; $mail->FromName = "Полное имя"; $mail->addAddress("получатель1@example.com", "Имя получателя"); //Предоставляем путь и имя файла вложения $mail->addAttachment("file.txt", "File.txt"); $mail->addAttachment("images/profile.png"); //Имя файла необязательно $mail->isHTML(true); $mail->Subject = "Тема письма"; $mail->Body = "<i>Тело письма в HTML</i>"; $mail->AltBody = " Это текстовая версия письма "; if(!$mail->send()) { echo "Ошибка: ". $mail->ErrorInfo;} else { echo "Сообщение успешно отправлено"; }

Файлы File.txt и images/profile.png были прикреплены. Они находятся в одной директории. Вложения могут прикрепляться при помощи вызова объекта PHPMailer addAttachemnt. Для этого необходимо вызывать объект каждый раз, когда надо прикрепить вложения.

При использовании SMTP:

Также можно без труда отправить электронную почту при помощи SMTP, но для этого потребуется аутентификация email с иного хоста. К примеру, можно создать учетную запись на Hotmail для отправки электронной почты через этот сервис. SMTP — это протокол, который отправляет запросы электронной почты к почтовому серверу, и после проверки отправляет запросы к почтовому серверу получателя.

Рассмотрим пример отправки почты с веб-сайта PHP с использованием протокола SMTP для почтового сервера Gmail.

<?phprequire_once "vendor/autoload.php";$mail = new PHPMailer;//Подключение отладки SMTP.$mail->SMTPDebug = 3;//Задаем для PHPMailer использовать SMTP.$mail->isSMTP();//Устанавливаем имя хоста SMTP$mail->Host = "smtp.gmail.com";//Устанавливаем для этого параметры значение true, если хост SMTP требует аутентификации для отправки почты$mail->SMTPAuth = true;//Предоставляем имя посетителя и пароль$mail->Username = "name@gmail.com";$mail->Password = "super_secret_password";//Если для SMTP требует шифрование TLS, устанавливаем его$mail->SMTPSecure = "tls";//Устанавливаем порт TCP для подключения$mail->Port = 587;$mail->From = "name@gmail.com";$mail->FromName = "Полное имя";$mail->addAddress("name@example.com", "Имя получателя");$mail->isHTML(true);$mail->Subject = "Тема письма";$mail->Body = "<i>Тело письма в HTML</i>";$mail->AltBody = "Текстовая версия письма";if(!$mail->send()){echo "Ошибка: ". $mail->ErrorInfo;}else{echo "Сообщение успешно отправлено";}

Перед PHP отправкой почты через SMTP надо задать имя хоста, номер порта и шифрование. Также может потребоваться имя посетителя и пароль для аутентификации. Следует отметить, что не получится отправить письмо на Gmail, если включены два фактора аутентификации. Для этого потребуется дополнительная параметр.

Преимущество использования удаленного SMTP:

Основное преимущество использования удаленного SMTP заключается в том, что для возможности mail(), если для отправителя установлено не имя локального домена, сообщение будет помечено сервером получателя, как спам.

Предположим, что вы являетесь владельцем домена abc.com. Когда вы отправляете электронное письмо, то указываете себя, отправителя, как name@gmail.com, а получателя, как name@yahoo.com. После этого почтовый сервер Yahoo помечает письмо, как спам.

Извлечение электронных писем при помощи POP3:

PHPMailer поддерживает верификацию POP перед SMTP для отправки электронных писем. Следовательно, данная библиотека может отправлять файл на почту PHP при помощи SMTP, а верификацию производить через POP. Но также можно приобретать письма с почтовых серверов по протоколу POP3.

Сообщения об ошибках:

$mail ->ErrorInfo используется для вывода сообщений более чем на 40 языках. Для просмотра сообщений об ошибках на любом доступном языке скопируйте каталог языка из исходного кода PHPMailer в каталог проекта. Рассмотрим следующий пример, в котором для объекта PHPMailer установлен русский язык.

$mail->setLanguage("ru");

PHPMailer — это надежное решение для работы с электронной почтой

Мы рассмотрели альтернативный подход PHP для отправки электронной почты. Любой PHP-разработчик не может обойтись без реализации возможности отправки электронных писем. Также для этого можно без труда использовать сторонние сервисы. Кроме PHPMailer есть и иные альтернативы, такие как Zend mail и swiftmailer.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *