- Отправка писем через SMTP в PHPMailer
- Яндекс Почта
- Mail.ru
- Gmail
- Рамблер
- iCloud
- Мастерхост
- Timeweb
- Хостинг Центр (hc.ru)
- REG.RU
- ДЖИНО
- nic.ru
- Бегет — beget.com
- Спринтхост — sprinthost.ru
- PHP ОТПРАВКА ПОЧТЫ ЧЕРЕЗ SMTP ЯНДЕКСА
- Отправка почты через SMTP с помощью PHP
- Готовый класс — PHP
- Настройка класса
- Прикрепление файлов к письму
Отправка писем через SMTP в PHPMailer
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают в спам или совсем не доходят до адресатов. Альтернатива – это отправка e-mail через SMTP с реального почтового ящика.
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once '/PHPMailer/src/Exception.php'; require_once '/PHPMailer/src/PHPMailer.php'; require_once '/PHPMailer/src/SMTP.php'; // Для более ранних версий PHPMailer //require_once '/PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->CharSet = 'UTF-8'; // Настройки SMTP $mail->isSMTP(); $mail->SMTPAuth = true; $mail->SMTPDebug = 0; $mail->Host = 'ssl://smtp.gmail.com'; $mail->Port = 465; $mail->Username = 'Логин'; $mail->Password = 'Пароль'; // От кого $mail->setFrom('mail@snipp.ru', 'Snipp.ru'); // Кому $mail->addAddress('mail@site.com', 'Иван Петров'); // Тема письма $mail->Subject = $subject; // Тело письма $body = '«Hello, world!»
'; $mail->msgHTML($body); // Приложение $mail->addAttachment(__DIR__ . '/image.jpg'); $mail->send();
Если при отправки писем возникает ошибка « Could not connect to SMTP host », то необходимо добавить следующие строки:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Яндекс Почта
$mail->Host = 'ssl://smtp.yandex.ru'; $mail->Port = 465; $mail->Username = 'Логин@yandex.ru'; $mail->Password = 'Пароль';
В настройках почты нужно разрешить доступ к почтовому ящику с помощью почтовых клиентов:
Mail.ru
$mail->Host = 'ssl://smtp.mail.ru'; $mail->Port = 465; $mail->Username = 'Логин@mail.ru'; $mail->Password = 'Пароль';
Gmail
$mail->Host = 'ssl://smtp.gmail.com'; $mail->Port = 465; $mail->Username = 'Логин@gmail.com'; $mail->Password = 'Пароль';
Если возникает ошибка при отправки почты, то нужно отключить двухфакторную авторизацию и разблокировать «ненадежные приложения» в настройках конфиденциальности аккаунта https://myaccount.google.com/security?pli=1
Рамблер
$mail->Host = 'ssl://smtp.rambler.ru'; $mail->Port = 465; $mail->Username = 'Логин@rambler.ru'; $mail->Password = 'Пароль';
iCloud
$mail->Host = 'ssl://smtp.mail.me.com'; $mail->Port = 587; $mail->Username = 'Логин@icloud.com'; $mail->Password = 'Пароль';
Мастерхост
$mail->Host = 'ssl://smtp.masterhost.ru'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
Timeweb
$mail->Host = 'ssl://smtp.timeweb.ru'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
Хостинг Центр (hc.ru)
Доступ к сторонним почтовым серверам по SMTP-портам (25, 465, 587) ограничен, разрешена отправка не более 300 сообщений в сутки.
$mail->Host = 'smtp.домен.ru'; $mail->SMTPSecure = 'TLS'; $mail->Port = 25; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
REG.RU
$mail->Host = 'ssl://serverXXX.hosting.reg.ru'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
ДЖИНО
$mail->Host = 'ssl://smtp.jino.ru'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
nic.ru
$mail->Host = 'ssl://mail.nic.ru'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
Бегет — beget.com
$mail->Host = 'ssl://smtp.beget.com'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
Спринтхост — sprinthost.ru
$mail->Host = 'ssl://smtp.ВАШ_ДОМЕН'; $mail->Port = 465; $mail->Username = 'Логин@домен.ru'; $mail->Password = 'Пароль';
PHP ОТПРАВКА ПОЧТЫ ЧЕРЕЗ SMTP ЯНДЕКСА
Для отправки почты через SMTP Яндекса на языке PHP необходимо использовать библиотеку PHPMailer. Для начала нужно загрузить ее с помощью Composer:
composer require phpmailer/phpmailer
Далее, создается экземпляр класса PHPMailer и настраиваются параметры сервера SMTP:
$mail = new PHPMailer\PHPMailer\PHPMailer();$mail->isSMTP();$mail->Host = ‘smtp.yandex.ru’;$mail->Port = 465;$mail->SMTPSecure = ‘ssl’;$mail->SMTPAuth = true;$mail->Username = ‘username@yandex.ru’;$mail->Password = ‘password’;
Затем, настраиваются параметры письма, такие как отправитель, получатели, тема и текст:
$mail->setFrom(‘username@yandex.ru’, ‘Имя отправителя’);$mail->addAddress(‘recipient1@example.com’, ‘Имя получателя1’);$mail->addAddress(‘recipient2@example.com’, ‘Имя получателя2’);$mail->Subject = ‘Тема письма’;$mail->Body = ‘Текст письма’;
Наконец, вызывается метод send() для отправки письма:
Готовый код для отправки письма через SMTP Яндекса на PHP:
require ‘vendor/autoload.php’;$mail = new PHPMailer\PHPMailer\PHPMailer();// SMTP settings$mail->isSMTP();$mail->Host = ‘smtp.yandex.ru’;$mail->Port = 465;$mail->SMTPSecure = ‘ssl’;$mail->SMTPAuth = true;$mail->Username = ‘username@yandex.ru’;$mail->Password = ‘password’;// Email content$mail->setFrom(‘username@yandex.ru’, ‘Имя отправителя’);$mail->addAddress(‘recipient1@example.com’, ‘Имя получателя1’);$mail->addAddress(‘recipient2@example.com’, ‘Имя получателя2’);$mail->Subject = ‘Тема письма’;$mail->Body = ‘Текст письма’;// Send emailif(!$mail->send()) < echo 'Ошибка отправки письма: ' . $mail->ErrorInfo;> else
Как настроить SMTP на Яндекс почте
Как настроить E-mail уведомление через SMTP Yandex?
How To Send Email Using PHP With PHP Mailer — PHP Send Email — Full Step By Step
SMTP Gmail для отправки писем с сайта
Как работает электронная почта: SMTP, POP3 и IMAP
Почта в OpenServer. Настройка почты и отправка письма по SMTP в OpenServer.
Отправка писем на PHP. Функция mail
Отправка почты через SMTP с помощью PHP
Здравствуйте дорогие читатели. В этой записи я расскажу Вам как отправить письмо с вашего сайта через SMTP сервер. Перед тем, как отправлять письма через SMTP необходимо обязательно настроить DMARC, DKIM, SPF. Если не настроить, ваши письма будут попадать в спам, но нам этого не нужно. Статья — Как настроить DMARC, SPF, DKIM подпись на своем сайте.
Готовый класс — PHP
Для начала загрузите готовый класс, по ссылке — SendMailSmtpClass.php.zip
Распаковываем архив, и размещаем в любую директорию на Вашем сайте.
Настройка класса
Настройка очень простая. Разместите этот код на странице, которая присутствует на каждой. Обычно это — страница конфига.
require_once "SendMailSmtpClass.php"; // подключаем класс //ДЛЯ YANDEX.RU $mailSMTP = new SendMailSmtpClass('mail@yandex.ru', 'pass', 'ssl://smtp.yandex.ru', 465, "UTF-8"); //ДЛЯ MAIL.RU $mailSMTP = new SendMailSmtpClass('mail@mail.ru', 'pass', 'ssl://smtp.mail.ru', 465, "UTF-8"); //РАСШИФРОВКА ЗНАЧЕНИЙ $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'порт', 'кодировка письма');
Код отправки самого письма:
$from = array("Блог программиста", // Имя отправителя "support@212d.ru" // почта отправителя ); $result = $mailSMTP->send('Кому письмо, можно через , два получателя', 'Тема письма', 'Текст письма', $from);
$result возвращает либо true — успешная отправка, либо false — ошибка.
Прикрепление файлов к письму
$mailSMTP->addFile("file1.jpg"); $mailSMTP->addFile("file2.jpg");
В итоге, если Вы все настроили правильно Ваше письмо будет отправляется через этот SMTP сервер с подписей DKIM, и не попадет в спам.
Пишите свои вопросы, предложения в комментариях помогу Всем!