Обрабатывать ВСЕ входящие электронные письма с помощью PHP-скрипта

Для проекта, над которым я сейчас работаю, я хочу, чтобы пользователи могли отправлять электронные письма на username@sub.domain.com. Эти электронные письма или, более конкретно, ВСЕ электронные письма, отправляемые на sub.domain.com, должны обрабатываться сценарием PHP.

В этом сценарии мне нужно иметь возможность получить имя пользователя (часть перед @), а также заголовок и тело письма.

  1. Возможно ли это сделать без предварительной настройки псевдонимов электронной почты для каждого пользователя?

  2. Есть ли способ запустить скрипт по прибытии электронной почты? Или мне нужно периодически запускать задание cron? Я не против, если сценарий доступен через Интернет.

  3. Из того, что я прочитал, я предполагаю, что для этого мне нужно использовать IMAP или POP3, это правильно? У меня нет опыта ни с одним из них. Какой из них лучше для этого варианта использования?

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

Заранее спасибо:)

Редактировать: @Dagon упомянул конвейерную передачу электронной почты к сценарию в качестве альтернативы #3. Как? Я никогда не делал ничего подобного раньше.

Edit2: все, что я хочу сделать, это подключить PHP-скрипт ко всем входящим электронным письмам. Это слишком широко?

1 ответ

Решение
  1. Вы должны быть в состоянии создать псевдоним @sub.domain.com в одном почтовом ящике, а заголовок сообщения "От:" будет содержать имя пользователя.

  2. Вам нужно будет либо оставить скрипт работающим, либо запустить скрипт в задании cron. При получении письма не может быть запущен сценарий без дополнительной и ненужной сложности.

  3. Я думаю, что лучше использовать IMAP буквально только потому, что существующие библиотеки PHP для IMAP лучше, чем библиотеки для POP. В общем, POP в любом случае является низшим протоколом.

  4. Возможно, вы захотите использовать что-то кроме имени пользователя для адреса электронной почты, например, случайную строку, связанную с именем пользователя. В противном случае, если вы знаете чье-то имя пользователя, вы можете подражать им в сценарии PHP.

Другие вопросы по тегам