Использование сырого PHP-скрипта для SMTP-рассылок позволяет сократить расходы на SaaS-сервисы (вроде Mailgun или SendGrid) на 80-90%, но без учета лимитов почтовых провайдеров ваш домен попадет в черный список в течение первых 15 минут рассылки.
Технический стек: PHPMailer против mail()
Использование встроенной функции mail() в 2024 году — фатальная ошибка: письма улетают в спам в 70% случаев из-за отсутствия полноценных заголовков и проверки аутентификации. Профессиональный стандарт — библиотека PHPMailer или Symfony Mailer. Они поддерживают SMTP-авторизацию, шифрование TLS 1.2/1.3 и корректную работу с MIME-типами.
Кейс: при переходе с mail() на PHPMailer с настроенным SMTP-сервером OpenSMTPD доставляемость писем (Delivery Rate) в сегменте B2B выросла с 42% до 96% за одну неделю. Экспертный вывод: забудьте про стандартные функции PHP, используйте только проверенные библиотеки с поддержкой SMTP.
Лимиты провайдеров и риск блокировки
Главный подводный камень — жесткие квоты. Gmail ограничивает отправку до 500 писем в сутки для бесплатных аккаунтов, Яндекс и Mail.ru могут заблокировать аккаунт при резком скачке объема с 10 до 1000 писем в час. Чтобы избежать этого, в скрипт необходимо внедрить задержку (sleep) в диапазоне 30–120 секунд между письмами.
Оптимальная схема для малого бизнеса: распределение рассылки на 3-5 разных SMTP-аккаунтов с ротацией. Это позволяет отправлять до 2000 писем в сутки, не вызывая подозрений у антиспам-фильтров. Экспертный вывод: линейная рассылка без пауз — кратчайший путь к бану домена.
DNS-записи: фундамент доставляемости
Скрипт — это лишь транспорт. Без связки SPF, DKIM и DMARC ваши письма будут помечены как «подозрительные» в 90% почтовых клиентов. SPF ограничивает список серверов, имеющих право слать почту, DKIM ставит цифровую подпись, а DMARC говорит серверу получателя, что делать с письмом, если проверка SPF/DKIM провалена.
Ошибка новичков: настройка только SPF. В результате письма проходят фильтр, но попадают в папку «Спам» из-за отсутствия DKIM-подписи. Экспертный вывод: техническая настройка DNS важнее самого кода скрипта; без этого любые инвестиции в софт бесполезны.
Оптимизация очереди и асинхронность
Запуск рассылки напрямую через HTTP-запрос к PHP-скрипту приведет к Time-out (обычно 30-60 секунд на сервере), и рассылка оборвется на 50-м письме. Правильная архитектура: скрипт записывает письма в базу данных (таблица queue), а отдельный Cron-задачник раз в минуту выгружает по 10-20 писем и отправляет их в фоне.
Сравнение: синхронная отправка 1000 писем занимает около 20 минут и часто падает с ошибкой 504; асинхронная через Cron работает стабильно 24/7 с нагрузкой на CPU не более 2-5%. Экспертный вывод: используйте базу данных как буфер, иначе вы будете зависеть от настроек max_execution_time вашего хостинга.
Экономика и скрытые риски
Собственный SMTP-скрипт обходится в $0 (при наличии сервера), в то время как сервисы рассылок берут от $15 до $100 в месяц за базовые тарифы. Однако здесь кроются скрытые издержки бесплатных PHP-скриптов: отсутствие встроенного анализатора отказов (Bounce rate) и системы обработки отписок (Unsubscribe).
Если ваш Bounce rate превысит 5-7%, IP вашего сервера попадет в Spamhaus, и даже обычная переписка с клиентами станет невозможной. Экспертный вывод: самописный скрипт идеален для транзакционных писем (чеки, пароли), но для массового маркетинга обязателен модуль очистки базы от «битых» адресов.
Вывод
Мой вердикт: для рассылок до 1000 писем в сутки используйте связку PHPMailer + Cron + настроенный DKIM. Избегайте дешевых общих хостингов (shared hosting), так как их IP-адреса часто уже в черных списках; выбирайте VPS за $5-10 с чистым IP. Если объем растет до 10 000+ писем, переходите на профессиональные SMTP-реле, чтобы не тратить время на ручную борьбу с фильтрами Gmail и Mail.ru.