Більшість причин лежить поза кодом - у DNS і репутації домену, - але частина залежить від застосунку.
Що налаштовується в DNS:
- SPF - перелік серверів, яким дозволено слати від імені домену.
- DKIM - криптопідпис листа; без нього провайдер не може підтвердити, що лист не підроблено.
- DMARC - політика на випадок, коли SPF чи DKIM не зійшлися.
Без цих трьох записів лист від нового домену з високою ймовірністю не дійде до вхідних.
Що залежить від застосунку:
- Адреса відправника з власного домену.
fromвидуnoreply@gmail.comне пройде перевірку - домен уfromмає збігатися з тим, для якого налаштовані SPF і DKIM. - Транзакційне окремо від масового. Розсилка з поганим показником відкриттів псує репутацію домену, і за нею перестають доходити листи про відновлення пароля. Часто для розсилок беруть окремий піддомен.
- Відписка. Для масових листів заголовок
List-Unsubscribeобовʼязковий: без нього люди тиснуть «спам» замість відписки, і це найгірший сигнал. - Текстова версія. Лист без
text/plainчастина фільтрів вважає підозрілим. - Обробка bounce. Слати на адресу, що повертає помилку, місяцями - прямий шлях до блокування; провайдери дають вебхуки, які варто слухати.
Практично: транзакційну пошту віддають спеціалізованому сервісу (Mailgun, Postmark, SES), а не SMTP власного сервера, - вони тримають репутацію IP і дають статистику доставки. У Laravel це лише зміна MAIL_MAILER.