Почтовая программа. Отправка почты на PHP

В двух предыдущих статьях мы настроили сервер и домен для дальнейшей отправки почты. Пришло время написать простую программу, которая и будет осуществлять рассылку. Поскольку реализуем мы все под веб-сервер, то писать скрипт будем на PHP.

Отправить письмо с сервера можно 3-я способами:

  • через функцию mail() – самый простой и менее надежный вариант, его рассматривать не будем, кого интересует данный вид отправки, можете почитать в документации PHP;
  • через SMTP-сервер, как собственный, так и сторонний – самый оптимальный вид отправки сообщений, его подробнее и рассмотрим в данной статье;
  • через сторонние сервисы, такие как AmazonMandrill, Mailgun и прочее – хорошее и простое решения, но зачастую использование подобных серверов, может оказаться дороже собственного сервера. Подробнее рассмотрим в другой статье.

Для отправки письма через SMTP-сервер необходимо:

  • данные для доступа к SMTP-серверу;
  • e-mail получателя;
  • письмо и его заголовок;
  • системные заголовки.

С электронным адресом получателя, текстом письма и его заголовком, проблем нету. Данные для доступа мы имеем, обычно это хост, порт и пара логин/пароль. Остается составить системные заголовки, в них то и кроется вся сложность исходной задачи.

Создание системных заголовков

Рассмотрим основной набор заголовков, которое должно иметь письмо претендующее на попадание в папку “Входящие”:

  • Date – дата отправки;
  • Subject – заголовок сообщения перекодированный в base64, чтобы избежать проблем с кодировкой;
  • Reply-To – имя и e-mail для ответа;
  • MIME-Version – версия MIME-стандарта;
  • Content-Type – тип письма и его кодировка, тип письма обычно указывается html либо plain (текстовая версия);
  • Content-Transfer-Encoding – тип конвертации, обычно используется “8bit”;
  • From – имя и e-mail отправителя;
  • To – имя и e-mail получателя;
  • Message-ID – id сообщения в вашей системе;
  • Errors-To – e-mail, куда будут отправлена информация о возникших ошибках;
  • X-Complaints-To – e-mail, куда будут отправлена информация о возникших жалобах;
  • X-Sender – e-mail системного отправителя;
  • List-Unsubscribe – здесь указывается ссылка или e-mail для отписки;
  • List-id – id текущей рассылки, для статистики;
  • Precedence – этот заголовок необходим в случае массовой рассылки, значение ставится bulk.

Класс для отправки почты на PHP

С необходимыми заголовками разобрались, переходим теперь к написанию класса, который будет осуществлять отправку почты.

Отправка пробного письма

Для рассылки, почти, все готово, остается проверить, отправив пробное письмо.

Скачать готовый скрипт можно здесь.

На этом с отправкой почты заканчиваем, если возникли вопросы, задаем их в комментариях.

Также может быть интересно:

загрузка комментариев