Что должно быть известно до настройки SMTP

Нужны host, port, TLS-режим, login, password/app password, допустимый From и ограничения провайдера. Не храните пароль SMTP в JavaScript или публичном репозитории.

Базовая конфигурация

ПараметрПример
Hostsmtp.example.com
Port587
EncryptionSTARTTLS
Usernameno-reply@example.com
Fromадрес вашего домена
Reply-Toemail пользователя формы
Timeoutограниченный, например 10–20 сек
Queue/retryпри временной ошибке

Проверить TLS-соединение с SMTP

BASH
openssl s_client -starttls smtp   -connect smtp.example.com:587   -servername smtp.example.com

# Завершить сессию:
QUIT

Не подставляйте email посетителя в From

Если форма отправляется «от имени» произвольного Gmail/Yandex адреса, это конфликтует с почтовой аутентификацией. Используйте From своего домена, а адрес клиента помещайте в Reply-To.

Что логировать

Сохраняйте время, получателя, message-id, SMTP host, код ответа и краткую ошибку. Пароль и полный auth exchange в production-log не нужны.

Если письмо не пришло

СлойПроверка
Формазапрос успешно дошёл до backend?
Приложениевызов SMTP был выполнен?
SMTPкакой код вернул сервер?
DNSSPF/DKIM/DMARC настроены?
Получательspam/reject/quarantine?
РепутацияPTR, домен, IP, история отправителя

Очередь лучше синхронной отправки

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

Скачать примеры для веб-разработки

RuJul Web Development Examples — один ZIP

Связанные материалы