Как отправлять письма с помощью 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 ошибок.
Затем вам нужно будет согласно настройкам вашего проекта запускать файл на каждое событие, чтобы отправить транзакционное сообщение.
Обновлено: 07.01.2024
или