Управляйте своими библиотеками PHP с помощью Composer. Посмотрите наш скринкаст « Зависимости от PHP — это просто» с помощью Composer, чтобы узнать, как это сделать.
PHPMailer является одной из самых популярных библиотек PHP с открытым исходным кодом для отправки писем. Впервые он был выпущен еще в 2001 году, и с тех пор он стал любимым способом программной отправки писем PHP-разработчиком, помимо нескольких других фаворитов, таких как Swiftmailer .
В этой статье мы поговорим о том, почему вы должны использовать PHPMailer вместо PHP-функции mail()
и покажем несколько примеров кода о том, как использовать эту библиотеку.
Является ли это альтернативой функции PHP mail()
?
В большинстве случаев это альтернатива PHP-функции mail()
, но во многих других случаях функция mail()
просто недостаточно гибкая для достижения того, что вам нужно.
Прежде всего, PHPMailer предоставляет объектно-ориентированный интерфейс, тогда как mail()
не является объектно-ориентированным. Разработчики PHP, как правило, ненавидят создавать строки $headers
при отправке электронных писем с помощью функции mail()
потому что они требуют много экранирования — PHPMailer делает это проще простого. Разработчикам также необходимо написать грязный код (экранирование символов, кодирование и форматирование) для отправки вложений и электронных писем на основе HTML при использовании функции mail()
тогда как PHPMailer делает это безболезненным.
Кроме того, функция mail()
требует, чтобы локальный почтовый сервер отправлял электронные письма. PHPMailer может использовать нелокальный почтовый сервер (SMTP), если у вас есть аутентификация.
Дополнительные преимущества включают в себя:
- Он может печатать различные виды сообщений об ошибках на более чем 40 языках, когда не удается отправить электронное письмо
- Интегрированная поддержка протокола SMTP и аутентификация по SSL и TLS
- Может отправлять альтернативную текстовую версию электронной почты для почтовых клиентов без HTML
- Очень активное сообщество разработчиков, которое обеспечивает его безопасность и актуальность
PHPMailer также используется популярными системами управления контентом PHP, такими как WordPress, Drupal, Joomla и т. Д.
Установка PHPMailer
Вы можете установить PHPMailer с помощью Composer:
composer require phpmailer/phpmailer
Отправка электронной почты с локального веб-сервера с помощью PHPMailer
Вот самый простой пример отправки электронной почты с локального веб-сервера с использованием PHPMailer
<?php require_once "vendor/autoload.php"; //PHPMailer Object $mail = new PHPMailer; //From email address and name $mail->From = "from@yourdomain.com"; $mail->FromName = "Full Name"; //To address and name $mail->addAddress("recepient1@example.com", "Recepient Name"); $mail->addAddress("recepient1@example.com"); //Recipient name is optional //Address to which recipient will reply $mail->addReplyTo("reply@yourdomain.com", "Reply"); //CC and BCC $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); //Send HTML or Plain Text email $mail->isHTML(true); $mail->Subject = "Subject Text"; $mail->Body = "<i>Mail body in HTML</i>"; $mail->AltBody = "This is the plain text version of the email content"; if(!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent successfully"; }
Код и комментарии должны быть достаточно четкими, чтобы объяснить все, что происходит.
Отправка электронного письма с вложениями
Давайте рассмотрим пример того, как отправить письмо с вложениями, используя PHPMailer.
<?php require_once "vendor/autoload.php"; $mail = new PHPMailer; $mail->From = "from@yourdomain.com"; $mail->FromName = "Full Name"; $mail->addAddress("recipient1@example.com", "Recipient Name"); //Provide file path and name of the attachments $mail->addAttachment("file.txt", "File.txt"); $mail->addAttachment("images/profile.png"); //Filename is optional $mail->isHTML(true); $mail->Subject = "Subject Text"; $mail->Body = "<i>Mail body in HTML</i>"; $mail->AltBody = "This is the plain text version of the email content"; if(!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent successfully"; }
Здесь мы прилагаем два файла, т.е. file.txt
который находится в том же каталоге, что и скрипт, и images/profile.png
который находится в каталоге images
каталога скрипта.