Но, прежде всего, не забудьте поместить на ваш сервер три файла, они находятся в папке src оригинального репозитория PHPMailer:
<?php
require_once('PHPMailer.php');
require_once('SMTP.php');
require_once('Exception.php');
$mail = new PHPMailer();
$mail->isSMTP();
// IP или хостнейм сервера, на котором находится Ваш почтовый аккаунт. Этот адрес Вы можете найти в письме с данными от хостинг-аккаунта.
// так как мы используем 465 порт, то перед SERVER_ADDRESS надо указать ssl://
// если будем использовать 587 порт, то перед SERVER_ADDRESS надо указать tls://
// если используется 25 порт, то указывается только SERVER_ADDRESS
$mail->Host = 'ssl://SERVER_ADDRESS';
$mail->SMTPAuth = true;
// наименование почтового ящика, или логин на почтовом сервере. Как правило, Вы указываете его, когда создаете почтовый ящик.
$mail->Username = '[email protected]';
// пароль от почтового ящика.
$mail->Password = 'PASSWORD';
// при указании SMTPSecure = ssl, то используется порт 465
// при указании tls - порт 587
// рекомендуется сочетать с указанием протокола в переменной Host
$mail->SMTPSecure = 'ssl';
$mail->Port = '465';
$mail->SMTPOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ] ];
// далее следует код, который отвечает за отправку письма
// укажите почтовый ящик отправителя. Рекомендуем указывать такой же, который указываем в авторизационных данных - [email protected]
$mail->From = 'ЯЩИК ОТПРАВИТЕЛЯ';
// укажите имя отправителя, например "Сайт DOMAIN.RU"
$mail->FromName = 'ИМЯ ОТПРАВИТЕЛЯ';
// укажите тему сообщения здесь
$mail->Subject = 'ТЕМА ВАШЕГО СООБЩЕНИЯ';
// текст сообщения
$mail->Body = 'ТЕКСТ СООБЩЕНИЯ';
// кодировка, можете изменить на необходимую, но чаще всего используется UTF-8
$mail->CharSet = 'UTF-8';
// укажите true вместо false, если хотите, чтобы сообщение обрабатывалось как HTML
$mail->isHTML(false);
// укажите почтовый адрес получателя
$mail->AddAddress('ЯЩИК ПОЛУЧАТЕЛЯ');
// укажите 4, если почта не отправляется, чтобы узнать, почему
$mail->SMTPDebug = 0;
// отправляем письмо
if($mail->send()){
echo 'OK';
}else{
echo 'BAD';
}
Если письмо было отправлено, Вы увидите OK. Если не было - BAD. Если Вы получаете BAD вместо отправки письма, то рекомендуется установить значение переменной SMTPDebug = 4, тогда на странице появится отладочная информация с ошибками, которые легко отследить.
Возможные ошибки и типы их решения
SMTP Error: Could not connect to SMTP host. Connection failed. stream_socket_enable_crypto(): Peer certificate CN=`xxx.hostiman.ru' did not match expected CN=`mail.yyy.ru'
В качестве Host указан сервер без сертификата. Проверьте, выпущен ли для почтового домена сертификат SSL и соответствует ли он указанному серверу в переменной Host.
Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host.
Проверьте настройки подключения к серверу
Рекомендуем также прочитать следующие статьи:
- Как создать почтовый ящик на ISPmanager?
- Какие порты используются при подключении к почте?
Данный код можно использовать для отправки почты на сторонних сервисах, например:
- Создать почту для своего домена на Яндексе
- Создать почту для своего домена на Mail.ru
Если у Вас что-то не получилось, то создайте запрос в технический отдел и мы поможем Вам!