Як відправляти листи за допомогою 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
Перейдіть до вкладки Установки SMTP (SMTP Settings)> Основні (General). Скопіюйте значення для авторизації в 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 = новий 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 | Тип шифрування (відповідає порту) |
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 = 'Це є тіло в короткий текст для не-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 помилок.
Потім вам потрібно буде відповідно до налаштувань вашого проєкту запускати файл на кожну подію, щоб надіслати транзакційне повідомлення.
Оновлено: 10.01.2024
або