[//]: # (created 2026-08-14 after SMTP incident follow-up: cold mailbox e-16513832@yandex.ru → Yandex 554 SPAM on multi-recipient mails; single-recipient OK) # 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 получателем — проходит (проверено изоляционными тестами через msmtp: 1 получатель → 250, 2 получателя → 554 стабильно). Старый ящик `noreply@snolla.com` был прогрет, поэтому мульти-получатели раньше проходили. В БД **11 форм с 2–3 админами** в FormRecipients (vitya.kuznetsov@gmail.com почти везде) — их письма сейчас падают. ## Требуется (код, victor/snolla) 1. В mailer: вместо одного `sendMail({to: [a@x, b@y]})` — цикл по получателям, по одному письму на каждого (тот же шаблон/контент). Учесть: не дублировать одного и того же адресата; опционально Cc/Bcc оставить как есть. 2. Тесты: форма с 2 админами → 2 письма, оба уходят (каждое 1 получатель). ## После деплоя (admin, координация) - Вернуть vitya.kuznetsov@gmail.com в FormRecipients пилорама-checkout (удалён аварийно 2026-08-14, заказная форма 629B7586-14D2-442C-8CE9-8CE118F29A23, admin E4CC416B-5D13-4757-8EFE-03CBEA15B18C) и решить по остальным multi-admin формам тиража. - Деплой по тиражу: 8 стеков (pilonuxt 16 + env 17–23) — образы пересобрать/перекатить. ## Acceptance - [ ] Форма с 2+ админами → по одному письму на каждого, все уходят (без 554). - [ ] После деплоя vitya снова получает дубль заказов/контактов. - [ ] Проверено контрольным заказом на pilorama98.