5.1.3 Налаштування PHPMail, Sendmail. Відправлення пошти за допомогою скриптів

TheHost PHPmail Banner

PHPMailer представляє собою гнучкий інструмент у світі веб-розробки, призначений для відправлення електронної пошти через PHP-скрипти. Ця бібліотека забезпечує розробників зручним способом керування процесом відправлення електронних повідомлень, відкриваючи можливості для створення інтерактивних та інформативних веб-застосунків. У цій статті ми розглянемо основні аспекти використання PHPMailer як в середовищі нашого хостингу, так і на інших послугах.

Вибір поштової скриньки для PHPmail

Перед запуском скрипта необхідно вибрати поштову скриньку відправника, яку бібліотека буде використовувати для відправлення листів. Це необхідно, щоб листи, відправлені скриптами сайтів за допомогою PHPmail, доходили до всіх скриньок і не потрапляли в спам. Обов’язково вкажіть будь-яку існуючу скриньку, створену на основі Вашого домену.

Процес вибору скриньки для використання в PHPmail відрізняється в залежності від установленого для WWW-домена режиму роботи з PHP.

1. PHP в режимі CGI

Необхідно вибрати потрібну поштову скриньку в розділі Налаштування PHP, вказавши її у рядку E-Mail:

Налаштування пошти для PHP

Після цього перевірте зміни у файлі за шляхом php-bin/php.ini:

php-bin/php.ini
sendmail_path = "/usr/sbin/sendmail -t -i -f mail@exampledomain.com"
2. PHP в режимі Apache

Необхідно вибрати потрібну поштову скриньку в розділі WWW домени у властивостях домену в полі E-Mail адміністратора.

Налаштування пошти для PHP

При цьому обов’язково вказувати реально існуючу скриньку на основі Вашого домену. Рекомендуємо вказувати ім’я скриньки унікальним, замість стандартного webmaster@, оскільки через це можуть виникнути проблеми з відправленням листів.

Зверніть увагу: для використання виділеної IP-адреси для відправлення листів скриптами, потрібно встановити цей виділений IP для WWW-домену та для поштового домену і використовувати електронну адресу відправника, створену на поштовому домені, який налаштований на цьому виділеному IP.

Приклад скрипта PHPmail

Зазвичай масові розсилки електронної пошти здійснюються за допомогою функції mail() та існуючих на її основі phpMail і подібних. Але не всім відомо, що в скриптах відправлення за допомогою mail() можна також використовувати всі переваги SMTP, включаючи підвищену надійність доставки та багаторівневу аутентифікацію. Приклад скрипта з аутентифікацією SMTP наведено нижче:

// Підключення бібліотеки PHPMailer 
require 'path/to/PHPMailer/PHPMailerAutoload.php'; 

// Створення нового об'єкта PHPMailer  
$mail = new PHPMailer; 

// Налаштування параметрів SMTP 
$mail->isSMTP(); 
$mail->Host = 'smtp.example.com'; 
$mail->SMTPAuth = true; 
$mail->Username = 'client@example.com'; 
$mail->Password = 'client_password'; 
$mail->SMTPSecure = 'tls'; 
$mail->Port = 587; 

// Встановлення параметрів листа
$mail->setFrom('client@example.com', 'Client Name'); 
$mail->addAddress('recipient@example.com', 'Recipient Name');
$mail->Subject = 'Subject of the Email'; 
$mail->Body = 'This is the body of the email'; 

// Відправлення листа 
if (!$mail->send()) {     
    echo 'Error: ' . $mail->ErrorInfo; 
} else {
    echo 'Email has been sent successfully!'; 
}

Важливо: вищезазначений приклад вимагатиме від Вашого сервера наявність бібліотеки PHPMailer. Замініть path/to/PHPMailer/ на актуальний шлях до бібліотеки на Вашому сервері.

Як можна помітити, в якості логіна в такому скрипті використовується вже існуюча адреса пошти на сервері та пароль від неї.

При використанні phpMail на наших послугах хостингу аутентифікацію SMTP можна проводити за спрощеним варіантом, без вказання пароля та шифрування, а також використовуючи 25-й порт. Блок Налаштування параметрів SMTP у цьому випадку матиме наступний вигляд:

// Налаштування параметрів SMTP 
$mail->isSMTP(); 
$mail->Host = 'localhost'; 
$mail->SMTPAuth = false; 
$mail->Username = 'client@example.com'; 
$mail->Port = 25;

Перевірка роботи PHPmail за допомогою тестового скрипта

Існує легкий спосіб перевірки функціональності PHPmail та правильності налаштувань сайту в панелі управління хостингом.

Потрібно створити в папці Вашого сайту текстовий файл mail.php з таким вмістом:

<?php
var_dump(mail("mail@exampledomain.com.ua","Test","Test"));
?>

Замість mail@exampledomain.com.ua слід вказати робочу поштову скриньку, до якої у Вас є доступ.

Потім запустіть створений файл у браузері за посиланням ваш_домен/mail.php.

У випадку успішного виконання скрипта ви отримаєте bool true, і на зазначений вами ящик прийде лист із темою Test та тілом листа Test. Якщо скрипт не працює - отримаєте bool false, і лист не прийде.

У разі невдачі спробуйте змінити налаштування сайту згідно з вищезазначеними рекомендаціями та також спробуйте змінити режим PHP для сайту і повторити спробу.

Зверніть увагу: якщо тестовий скрипт все ж працює, але Ваш особистий скрипт ні, тоді справа не в налаштуваннях домену або хостингу, а в коді Вашого скрипта. У такому випадку слід звернутися із цим питанням до розробника Вашого сайту або в веб-студію.