Как отправить письмо из скрипта PHP с использованием аутентификации SMTP

Функция PHP mail () проста, удобна в использовании и прекрасно работает, но она также чрезвычайно негибкая. Если вы хотите указать SMTP-сервер для сценария или использовать SMTP-аутентификацию, вам не повезло. Чтобы преодолеть эти драконовские ограничения и отправить электронную почту из вашего PHP-скрипта с использованием аутентификации SMTP, вам нужно обратиться к классу PHP, такому как PHPmailer или пакет PEAR Mail.

Отправка электронной почты с помощью функции PHP Mail

Когда вы используете функцию PHP mail (), вы в конечном итоге отправляете электронную почту прямо с вашего веб-сервера, а не с вашего почтового сервера. Если у вас есть почтовый сервер через веб-хостинг или даже почтовый сервер с другим хостом, обычно лучше вместо этого отправлять почту через него.

Проблема в том, что функция PHP mail () не предоставляет никакого собственного способа отправки почты через SMTP. Если вы хотите открыть эту функциональность, вам нужно установить дополнительный класс PHP.

Вот несколько вариантов, которые работают:

  • PHPMailer
  • SwiftMailer
  • Zend_Mail
  • XpertMailer
  • PEAR Mail

Мы покажем вам, как использовать PEAR Mail, но вы можете использовать любой класс, который поддерживает SMTP.

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

Используйте этот метод, только если вы используете PHP для создания своих собственных почтовых форм. Если вы используете систему управления контентом (CMS), такую ​​как WordPress, ищите плагин или встроенную функциональность для отправки почты через SMTP, а не пытайтесь создать свою собственную.

Как использовать PEAR для отправки почты через SMTP


  1. Убедитесь, что ваш домен указывает на записи Mail Exchange (MX) вашего почтового сервера, и запишите имя вашего почтового сервера. Например, это может быть mail.yourdomain.net или smtp.yourdomain.net.


  2. Проверьте, установлен ли PEAR Mail на ваш почтовый сервер.


  3. Если PEAR Mail еще не установлен, обратитесь к вашему веб-хосту за конкретными инструкциями по его установке.


  4. После установки PEAR Mail измените один из примеров файлов PHP в следующих разделах в соответствии со своими потребностями.


Пример PEAR Mail PHP-скрипт для SMTP-почты

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

require_once "Mail.php";
$ from = "Имя отправителя";
$ to = "Имя получателя";
$ subject = "Строка темы здесь:";
$ body = "любое сообщение, которое вы хотите";
$ host = "yourmailhost.com";
$ username = "ваше имя пользователя или адрес электронной почты";
$ password = "ваш пароль";
$ headers = array ('From' => $ from,
'To' => $ to,
'Subject' => $ subject);
$ smtp = Mail :: factory ('smtp',
массив ('host' => $ host,
'auth' => true,
'username' => $ username,
'пароль' => $ пароль));
$ mail = $ smtp-> send ($ to, $ headers, $ body);
if (PEAR :: isError ($ mail)) {
эхо (»

". $ mail-> getMessage ()."

«);
} еще {
эхо (»

Сообщение успешно отправлено!

«);
}
?>

Пример PEAR Mail PHP Script для аутентификации SMTP и шифрования SSL

Если вы хотите использовать аутентификацию SMTP и шифрование SSL, вам придется внести несколько изменений в предыдущий пример. Вам нужно будет указать переменную хоста на вашем почтовом сервере SSL, а также указать номер порта, например, 25, 465, 587, 2525 или 8025. Обратитесь к вашему почтовому хосту за дополнительной информацией, если вы не можете определить, какой порт использовать.

require_once "Mail.php";
$ from = "Имя отправителя";
$ to = "Имя получателя";
$ subject = "Строка темы здесь:";
$ body = "любое сообщение, которое вы хотите";
$ host = "ssl: //yourmailhost.com";
$ port = "587";
$ username = "ваше имя пользователя или адрес электронной почты";
$ password = "ваш пароль";
$ headers = array ('From' => $ from,
'To' => $ to,
'Subject' => $ subject);
$ smtp = Mail :: factory ('smtp',
массив ('host' => $ host,
'port' => $ port,
'auth' => true,
'username' => $ username,
'пароль' => $ пароль));
$ mail = $ smtp-> send ($ to, $ headers, $ body);
if (PEAR :: isError ($ mail)) {
эхо (»

". $ mail-> getMessage ()."

«);
} еще {
эхо (»

Сообщение успешно отправлено!

«);
}
?>
Ссылка на основную публикацию