Добавление бесплатного SMTP на сайт WordPress и не только
В этой статье разберёмся, почему нужно всегда использовать smtp-сервер на своём сайте, для чего он нужен и как бесплатно (за ограниченное число писем) оформить его из РФ.

Для чего нужен SMTP
SMTP (Simple Mail Transfer Protocol) — это протокол для отправки электронной почты. Он нужен, чтобы передавать письма от отправителя к почтовому серверу и между серверами. При обычной отправке с помощью встроенного PHP письмо будет получено, но большинство почтовых клиентов прокинет его в СПАМ и клиент / пользователь его не увидит. Причем даже если помечать письма не как СПАМ, следующие письма все равно будут отправлены туда.
Проблема возникла из-за широкого распространения рекламных писем и СКАМ-писем, как ответ на это было решено использовать SMTP, он позволяет легко и быстро верифицировать отправляющего и заблокировать нежелательные сообщения, если такие будут.
Поэтому почтовые клиенты сейчас и кидают письма, отправленные другим способом в СПАМ.
Как настроить SMTP
Есть несколько способов это сделать:
- Настроить самому отдельный SMTP (это сложно и не очень выгодно, если у вас немного писем). Вот статья
- Либо воспользоваться готовым сервером, который будет пропускать через себя ваши письма. В этой статье будем говорить о нём.
Вообще вы можете настроить SMTP в Selectel (или других подобных площадках), но обычно только если все ваши сервера и домен настроены там, иначе работать не будет.
Я же нашел бесплатный вариант, доступный для пользования в РФ, зарегестрироваться не cложно и настойка тоже занимает немного времени – это SMTP.BZ.
Для регистрации нужно указать Имя, Email, Пароль – и готово. Затем нужно добавить домен в админке.
Сначала переходим в домены:

Нажимаем кнопку “Добавить новый домен”:

Добавляем домен:

После этого нужно будет в DNS-записях прописать указанные данные:

Я покажу на примере timeweb, но в целом это примерно одинаково делается везде, где бы не хранился ваш домен.
Заходим в “домены” -> “мои домены” -> “три точки” -> “редактор DNS”:

Далее выбираем “добавить запись” и выбираем тип:

После выбора типа вставляем значение и нажимаем “Сохранить”.
две записи будут txt, одна – CNAME. Для первой указываем smtpbz в “Хост”, для второй оставляем пустым.
Затем возвращаемся в админ-панель и проверяем наличие записей. После их появления домен должны подтвердить вручную сотрудники компании. Если этого не произойдёт в течение суток – напишите в поддержку, они отреагируют быстро (обычно в течение дня).
Теперь мы готовы отправлять письма. Переходим во вкладку “Подключение и тариф” и видим данные:

нам нужен хост, порт, логин и пароль. При желании можно создать отдельного пользователя с доступом к отдельным доменам.
Настройка SMTP в WordPress
Простейшая настройка SMTP в WordPress – с помощью плагина.
Как обычно, заходим в плагины -> добавить:

И вводим SMTP в поиск, выбираем плагин WP Mail SMTP:

(это не принципиально, вы можете выбрать другой плагин, но я покажу на этом).
После активации плагина и начала настройки, нам нужно выбрать какую почтовую программу мы будем использовать:

Представленные тут варианты просты в интеграции, но либо не работают без ВПН, либо имеют проблемы с регистрацией на ру почту, либо платные и тд. Поэтому, собственно, я и решил написать эту статью.
Листаем в самый низ и выбираем “Прочие SMTP”:

Далее нужно заполнить информацию из smtp.bz таким вот образом:

Также можно указать имя (как будет отображаться почта) и email отправителя (если будете отправлять письма клиентам, то удостоверьтесь, что создали такую почту и на нее приходят письма):

После будет еще три шага, которые нужно просто пропустить – и готово. Плагин отправит тестовое письмо на указанный вами ящик и вы сможете проверить что все работает корректно.
Настройка для PHP
Проще всего установить библиотеку phpmailer с помощью composer:
composer require phpmailer/phpmailer
Затем пишем отправку письма:
// Подключаем класс PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php'; // Если используете Composer
try {
// Создаем объект PHPMailer
$mail = new PHPMailer(true); // true — включаем обработку исключений
// Настраиваем SMTP-сервер
$mail->isSMTP(); // Используем SMTP-протокол
$mail->Host = 'connect.smtp.bz'; // Адрес SMTP-сервера
$mail->SMTPAuth = true; // Включаем аутентификацию
$mail->Username = 'your_username'; // Логин почтового аккаунта
$mail->Password = 'your_password'; // Пароль от почтового аккаунта
$mail->SMTPSecure = 'tls'; // Протокол шифрования (tls или ssl)
$mail->Port = 2525; // Порт для TLS
// От кого отправляется письмо
$mail->setFrom('from@example.com', 'Your Name');
// Кому отправляется письмо
$mail->addAddress('to@example.com'); // Добавляем получателя
// Тема письма
$mail->Subject = 'Test Email via SMTP';
// Текст письма
$mail->Body = 'This is the HTML message body in bold!';
// Если хотим отправить письмо в формате HTML, включаем эту строку
$mail->isHTML(true);
// Пытаемся отправить письмо
if ($mail->send()) {
echo 'Message has been sent';
} else {
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Готово – теперь отправка письма будет проходить через SMTP-протокол
Настройка для Python
В Python можно использовать встроенную smtplib
.
Код будет вот таким:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Данные для подключения к SMTP-серверу
smtp_server = 'connect.smtp.bz' # Адрес SMTP-сервера
smtp_port = 2525 # Порт для TLS (или 465 для SSL)
username = 'your_username' # Логин почтового аккаунта
password = 'your_password' # Пароль от почтового аккаунта
# Информация о письме
sender_email = 'from@example.com'
receiver_email = 'to@example.com'
subject = 'Test Email via SMTP with Python'
body = 'This is a test email sent using Python.'
# Создание MIME-сообщения
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = subject
# Добавление тела письма
message.attach(MIMEText(body, 'plain'))
# Преобразование сообщения в строку
text = message.as_string()
# Подключение к SMTP-серверу и отправка письма
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # Включаем шифрование TLS
server.login(username, password) # Авторизация
server.sendmail(sender_email, receiver_email, text) # Отправка письма
print('Email sent successfully!')
Готово!)
Вывод
Разобрали как быстро оформить себе SMTP через сторонний сервис и настроить отправку в WordPress или отправлять с использованием языков PHP / Python.