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-домена и для почтового домена и использовать email отправителя созданный на почтовом домене, который настроен на этом выделенном 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 для сайта и повторить попытку.

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