Три режима отправки почты
Во всех трёх режимах используется один и тот же SMTP, настроенный на странице «Почта». Различается способ выполнения автоматических писем, например подтверждения email или сброса пароля.
Сравнение режимов
| Возможность | Синхронный | Асинхронный (фон) | Асинхронный с БД |
|---|---|---|---|
| Когда сайт отвечает игроку | После обращения к SMTP | До отправки письма | После сохранения задания в БД |
| Скорость ответа страницы | Ниже, зависит от SMTP | Обычно высокая | Обычно высокая |
| Когда начнётся отправка | Сразу в запросе | Сразу после ответа, если процесс запустился | По мере обработки очереди |
| Нагрузка на веб-запрос | Выше, ждёт почтовый сервер | Меньше ожидания; остаётся фоновый процесс на сервере | Небольшая запись в БД; отправку делает отдельный обработчик |
| Письмо сохраняется для обработки после перезапуска | Нет | Нет | Да, в таблице заданий |
| Автоматические повторы при сбое SMTP | Нет | Нет | Да, с ограничением |
| Риск потерять неотправленное письмо | При ошибке попытка завершается сразу | Выше, если фоновый процесс не выполнится | Ниже, пока доступны БД и обработчик; не нулевой |
| Постоянный worker | Не нужен | Не нужен | Необязателен, если запущен Scheduler |
| Cron / Laravel Scheduler для писем | Не нужен | Не нужен | Нужен, если нет постоянного worker |
| Подходит для массовой регистрации | Плохо: задерживает запросы | Лучше, но нет надёжной очереди | Лучше при настроенной обработке |
| Первый запуск | Настроить SMTP | Настроить SMTP и пройти проверку режима | Настроить SMTP, Scheduler или worker и пройти проверку режима |
Скорость и надёжность
Это качественное сравнение, а не гарантированное число писем в секунду. Фактическая скорость зависит от SMTP-провайдера, сети, хостинга и количества заданий. Ни один режим не гарантирует попадание письма во «Входящие».
Режим 1. Синхронный
Как работает: игрок запрашивает подтверждение адреса или восстановление пароля. KaevCMS подключается к SMTP во время этого запроса; пользователь ждёт завершения попытки.
Для запуска: достаточно настроить SMTP и отправить тестовое письмо. Никакие дополнительные фоновые службы для почты не нужны.
Плюсы: простейшая настройка, ошибка SMTP обнаруживается сразу. Минусы: медленный почтовый сервер тормозит ответ сайта; автоматического повторения и сохранённой очереди нет.
Когда выбрать: небольшой сайт с редкими письмами либо хостинг, где фоновые процессы недоступны.
Режим 2. Асинхронный (фоновый)
Как работает: KaevCMS завершает веб-запрос и запускает отправку в отдельном фоновом PHP-процессе (Laravel Background Queue).
Для запуска: настроенный SMTP и возможность хостинга запускать фоновые процессы. Выберите режим во вкладке «Доставка». При первом включении CMS сама запустит проверку возможности, и активирует режим только при успешном результате.
Плюсы: игрок получает ответ без ожидания SMTP, постоянный worker и cron для отправки не требуются. Минусы: задание не хранится в надёжной очереди. Если фоновый процесс не стартовал или сервер перезапустился, письмо может не уйти, автоматического повтора нет. Потребление ресурсов сервера не исчезает — просто переносится за пределы основного запроса.
Когда выбрать: если важна отзывчивость сайта, а очередь БД недоступна. Для критичных писем это компромисс.
Режим 3. Асинхронный с очередью в БД
Как работает: KaevCMS записывает задание в таблицу очереди; отдельный обработчик отправляет письмо через SMTP. Незавершённые задания могут переживать перезапуск сайта.
Для запуска: настроенный SMTP, доступная таблица очереди и хотя бы один рабочий способ обработки:
- Обычный хостинг: настройте cron для
php artisan schedule:runкаждую минуту. Laravel Scheduler запускает встроенную обработку ожидающих заданийkaevcms:queue-drain. По умолчанию такой запуск ограничен бюджетом до 100 заданий и 50 секунд; это лимит работы, а не обещание доставить 100 писем. - VDS: можно использовать такой же cron или постоянный queue worker для более оперативной обработки. Инструкции: планировщик и worker. Если worker уже настроен, он должен обрабатывать очереди
mail-probe,mail,default.
После подготовки откройте Почта → Доставка, выберите режим с БД и сохраните. CMS проверит, что тестовое задание действительно выполняется: без успешной проверки режим не включится.
Плюсы: письма не зависят от длительности веб-запроса; при временных ошибках SMTP запланированы повторные попытки. Минусы: нужна работающая очередь. Если cron/worker остановится, письма будут ждать, а не отправляться сами.
Когда выбрать: регистрация игроков, восстановление паролей, регулярная нагрузка. Это предпочтительный вариант при корректно настроенной инфраструктуре.
Что происходит при ошибке SMTP
В режиме с очередью БД KaevCMS предусматривает:
- До 5 фактических ошибок в пределах приблизительно 30 минут.
- Паузы между повторными попытками: 1, 3, 5 и 10 минут.
- Тайм-аут ответа SMTP: 10 секунд.
- При сетевой ошибке почтового сервера — общую паузу очереди писем на 60 секунд, которая сама по себе не расходует попытку каждого письма.
Если попытки закончились, задание переходит в список неудавшихся. Его можно повторить в Админка → Система → Очереди, после устранения причины. Для письма сброса пароля старый токен может стать недействительным; безопаснее запросить новую ссылку.
Важно
Очередь в БД снижает риск потери, но не даёт 100% гарантии. Нужны работающая БД, планировщик/worker и исправный SMTP. Кроме того, принятие письма SMTP не означает доставку в почтовый ящик адресата.
Проверка и диагностика
- Проверьте SMTP тестовым письмом во вкладке «Подключение».
- Во вкладке «Доставка» нажмите «Проверить режим». Проверка фонового режима и очереди не отправляет письмо; она подтверждает, что выбранный способ выполнения заданий работает.
- Если используете БД, откройте Система → Очереди: там видны ожидающие и неудавшиеся задания, состояние обработки и действие повтора. После смены SMTP-настроек постоянному worker может понадобиться перезапуск.
- Проверьте, что
APP_URLсовпадает с публичным адресом сайта. Иначе ссылки в письмах могут вести не туда.
Что не зависит от выбранного режима
Тест SMTP, тест шаблона и ручная отправка письма из админки выполняются напрямую. Выбор режима влияет на автоматические письма аккаунтов, а не на все способы отправки из административной панели.
