task: snolla-mailer-per-recipient-send (ТЗ согласовано vitya 2026-08-14, отправлено в snolla inbox)

This commit is contained in:
2026-08-14 12:49:22 +03:00
parent 609e6c6949
commit 94acb53c68
2 changed files with 43 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
[//]: # (created 2026-08-14, TZ согласовано vitya; snolla занят задачами vitya — делать в его очередь)
# snolla-mailer-per-recipient-send
## Goal
Mailer (@snollajs/mailer / forms-api, `emailSender.js`): отправлять письмо формы **отдельным письмом на каждого получателя** (loop по FormRecipients), а не одним письмом с несколькими адресами в To.
## Почему
2026-08-14: после переезда почты форм на холодный ящик `e-16513832@yandex.ru` (app-password) Яндекс режектит **554 5.7.1 SPAM** ЛЮБОЕ письмо с **2+ получателями**; с 1 получателем — проходит (изоляционные тесты: 1→250, 2→554 стабильно; боевой заказ #2497 с 1 получателем — 0 ошибок). Старый ящик `noreply@snolla.com` был прогрет → мульти-получатели раньше проходили. В БД **11 форм с 23 админами** — их письма падают.
## Требования (код, victor/snolla)
1. Цикл по получателям, по одному письму на каждого (тот же шаблон/контент).
2. Dedupe одинаковых адресов.
3. Ошибка одного получателя не роняет остальные (per-recipient try/catch + лог).
4. Cc/Bcc/Reply-To сохранить.
5. Тест: форма с 2+ админами → по одному письму на каждого, все уходят (без 554).
## Координация
- **Статус 2026-08-14**: ТЗ отправлено в victor/snolla inbox (согласовано vitya). snolla занят задачами vitya — **делать в его очередь, не срочно**. Пинг после релиза → деплой наш.
- После релиза (admin): деплой тиража (pilonuxt 16 + env 1723) → контрольный заказ с 2 админами → 2 письма в ящиках (vitya + info@pilorama98.ru). FormRecipients НЕ трогаем.
- До фикса: письма админам по формам с 2+ получателями могут падать (554) — известное состояние, vitya в курсе.
## Acceptance
- [ ] Форма с 2+ админами → по одному письму на каждого, все уходят (без 554).
- [ ] После деплоя контрольный заказ: vitya + менеджер оба получили письмо.