Ранее я всегда заказывал рассылку на емаил на feedgee.com, но потом пришла в голову идея, как можно сэкономить на рассылке почты подписчикам. О том, как делается PHP Email рассылка, и с какими подводными камнями прийдется столкнуться пойдет речь в этой статье.

Как создается PHP Email рассылка?

PHP — универсальный язык, у него даже есть встроенная функция отправки почты mail, которая отправляет письма через sendmail или другую утилиту хостинга (зависит от конфигурации хостинга). И тут вопрос стоит в количестве писем. Как функция mail, так и утилиты хостинга работают достаточно медленно. Отправляя по одному письму в 30 секунд далеко не уедешь с базой клиентов 20000. Есть алтернативы, например, можно использовать SwiftMailer — целый компонент из классов на PHP, который позволяет отправлять письма с полным фаршем (вложениями, подписями и всеми доступными плюшками).

Но всегда есть подводные камни.

  1. Лимиты на количество отправок — все хостинги ставят ограничения на отправку исходящей почты из аккаунта клиента в 100-500 писем в день (этого должно быть достаточно для обычной переписки, но ограничивает возможности рассылки нежелательных писем, и значит защищает хостинг от пападения в спам-списки). Такие лимиты помешают вам отправить рассылку при помощи функции mail PHP.
  2. Лимиты почтовых провайдеров — если вы решили использовать SwiftMailer или другой компонент по отправке почты, то скорее всего ради того, чтобы использовать для отправки почтовые сервера почтовых провайдеров (Gmail, Yandex, Mail.ru). SwiftMailer и др. принимают креденшалы внешнего SMTP сервера и отправляют письмо прямо от них. И вот тут срабатывает гибкая система защиты уже со стороны почтового провайдера, он выражает подозрение в рассылке нежелательных писем (даже если они желательные) и блокирует отправку писем.

Есть альтернатива, PHP Email рассылка с VDS

Как видите, эти ограничения сильно портят шансы сделать рассылку на PHP. Выходом может стать аренда виртуального сервера. Там нет таких лимитов, что описаны ранее (вообще лимиты конечно есть, но они включаются только при поступлении провайдеру жалоб на ваш IP адрес).

Итак, у вас есть  виртуальный сервер, на нем настроен sendmail или smtp сервер, у него есть свой IP адрес. Используем отправку через php mail или Swiftmailer, отправляем письма. Но будьте внимательны, отправка происходит с одного и того же IP адреса. То есть рано или поздно этот IP адрес попадет хотябы в один спам-список, и письма начнут падать в папку СПАМ у получателей.

Что можно сделать ещё?

Обязательно нужно подтвердить, что вы не просто так, вы реальный отправитель. Для этого нужно проставить DKIM и SPF записи в настройки домена отправителя, и прикрепить dkim подпись к письму. Это небольшое зашифрованное чудовище добавляется к исходящим письмам и говорит почтовой службе получателя, что все отправлено по честному, без хакерства. Такие подписи умеет вставлять SwiftMailer. Это также немного повысит фактор доставки почты. О том как настроить SPF и DKIM читайте в следующих статьях.

Крайние меры

Все-таки в деле отправки рассылок лучше доверится профессионалам. Например, вернуться в feedgee, или отправлять письма через mailgun или manrillapp.