Как отправлять письма с помощью PHPMailer

Вы можете внедрить отправку транзакционных писем с настройками SMTP от SendPulse в ваш проект, используя PHPMailer. PHPMailer совместим со множеством PHP библиотек и позволяет создать персонализированный email с вложением, чтобы отправить его нужным получателям.

В статье рассмотрим, как установить PHPMailer, где найти SMTP параметры от SendPulse и как настроить файл на отправку письма.

Установите PHPMailer

Вы можете установить PHPMailer через Composer или скачать файл и установить его в ваш проект.

Если вы используете Composer, добавьте следующую строку в ваш «composer.json» файл:

"phpmailer/phpmailer": "^6.5">

Или запустите следующую команду:

composer require phpmailer/phpmailer

Если вы не используете Composer, скачайте файлы PHPMailer и добавьте их через дополнительные классы:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

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

Скопируйте данные для авторизации в SMTP

Перейдите в аккаунт SendPulse во вкладку «Настройки SMTP» > «Основные». Скопируйте значения для авторизации в SMTP: адрес сервера, порт, логин и пароль.

Вы можете использовать настройки SMTP после активации анкеты — когда на странице исчезнет надпись «Ваша анкета находится на модерации» и вы получите письмо с прохождением модерации.

Настройте объект для использования SMTP

Если вы использовали Composer для установки, добавьте autoload.php файл:

require 'path/to/composer/vendor/autoload.php';

Если вы устанавливали PHPMailer вручную, инициализируйте его следующим образом:

require path/to/PHPMailer/src/PHPMailer.php';
require path/to/PHPMailer/src/SMTP.php';
require path/to/PHPMailer/src/Exception.php';

Создайте PHPMailer класс:

<?php
use PHPMailer\PHPMailer\PHPMailer;

Создайте новый PHPMailer объект:

$mail = new PHPMailer(true);

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

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

В секцию «Настройки сервера» (Server settings) вам нужно вставить данные из ваших настроек SMTP в SendPulse.

//Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp-pulse.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = 'user@example.com';                     //SMTP username
    $mail->Password   = 'secret';                               //SMTP password
    $mail->SMTPSecure = 'ssl';            //Enable implicit TLS encryption
    $mail->Port       = 465;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

Где:

Host Адрес сервера
SMTPAuth Указывается, задействована ли аутентификации (в нашем случае — да, используется и нужно указать true)
Username Ваш логин email в SendPulse
Password Пароль указанного выше аккаунта
SMTPSecure Тип шифрования (соответствует порту)
Port Порт, по которому будете подключаться. Можете выбрать 2525, 465 и 587

Добавьте отправителя и получателя письма

В секции «Отправители» (Recipients) укажите отправителя и получателей.

//Recipients
    $mail->setFrom('from@example.com', 'Mailer');
    $mail->addAddress('joe@example.net', 'Joe User');     //Add a recipient
    $mail->addAddress('ellen@example.com');               //Name is optional
    $mail->addCC('cc@example.com');
    $mail->addBCC('bcc@example.com');

Где:

setFrom Email адрес и имя отправителя.

Адрес отправителя должен быть подтвержден у вас в SMTP аккаунте.

addAddress Email адрес и имя основного получателя.

Вы можете отправлять столько писем в час, сколько предусмотрено вашим тарифным планом.

addCC Email адрес и имя вторичного получателя в копии. Получатель увидят других получателей.
addBCC Email адрес и имя вторичного получателя в скрытой копии. Получатель не увидит других получателей.

Добавьте содержимое письма

В секции «Содержимое» (Content) укажите параметры самого письма.

Для персонализации письма в значении параметра вы можете использовать переменные из вашего проекта.

 //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Encoding = 'base64';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
   $mail->msgHTML(file_get_contents('contents.html'), __DIR__);

Где:

Subject Тема письма
Body Тело письма в HTML
AltBody Текстовая версия письма
Encoding Кодирует содержимое письма в выбранный формат данных. Может принимать значения base64 и quoted-printable.
msgHTML Конвертирует письмо из HTML в текстовую версию

Также дополнительно вы можете прикрепить файлы к письму. В параметре addAttachment укажите путь к файлу и имя файла.

//Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name

Настройте атрибуты отправки

В конце документа указывается функция отправки send. В команде echo вы можете указать, какое сообщение выводить при успешной отправке или при получении ошибки отправки:

$mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

Полный пример файла разной конфигурации вы можете посмотреть в официальной документации PHPMailer: Simple example и Example: SMTP.

Если у вас возникли сложности с использованием, вы также можете обратиться к документу Troubleshooting PHPMailer Problems и просмотреть Коды SMTP ошибок.

Затем вам нужно будет согласно настройкам вашего проекта запускать файл на каждое событие, чтобы отправить транзакционное сообщение.

Оцените, насколько полезна статья "Как отправлять письма с помощью PHPMailer"

Оценка: 4 / 5

    Популярное в нашем блоге

    Попробуйте SMTP сервис SendPulse бесплатно