Как обрабатывать электронные письма в реальном времени по мере их поступления

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

На данный момент я довольно зациклен на реализации части, на которой анализируются электронные письма в режиме реального времени, когда они получаются во входящих. Есть ли способ установить триггеры для чего-то вроде этого? У меня большой опыт работы с клиентами на основе php на основе электронной почты, но это кажется другим.

Как это может быть достигнуто – я беру на себя работу cron, но если это другой способ сделать это, я все уши.

Solutions Collecting From Web of "Как обрабатывать электронные письма в реальном времени по мере их поступления"

Да, есть. Вы можете отправлять электронные письма своим скриптам.

Предполагая, что вы используете cPanel, выполните следующие действия :

  • Войдите в свою cPanel.
  • Нажмите значок « Forwarders на вкладке « Mail ».
  • Нажмите кнопку « Add Forwarder .
  • Заполните Address to Forward и укажите адрес электронной почты, с которого вы хотите отправить сообщения.
  • Выберите « Pipe to a Program и заполните полный путь к скрипту, который будет обрабатывать сообщения.

И вот пример почтового ловушки, который отправляет полученное письмо на вашу другую почту (только для демонстрации):

 #!/usr/bin/php -q <?php // read from stdin $fd = fopen("php://stdin", "r"); $email = ""; while (!feof($fd)) { $email .= fread($fd, 1024); } fclose($fd); mail('you@yoursite.com','From my email pipe!','"' . $email . '"'); ?> 

Вы использовали бы работу cron, если бы хотели что-то сделать в определенное время. Если вы хотите что-то делать всякий раз, когда приходит электронное письмо, вам нужно связать ваш код с электронной почтой. Обычный способ сделать это – с Procmail (есть рецепт, который вы можете использовать (просто прочитайте PHP для Perl / shell)).

Я использую PECL extension mailparse на веб-сайте уже несколько лет, и это было здорово.

У меня есть вся почта для конкретного хоста, который передается на php-скрипт, который использует mailparse для синтаксического анализа сообщения и вставки его в базу данных, а также обработки вложений или нескольких получателей.

У них есть пример файла try.php в загрузке, который смог меня запустить.

В зависимости от того, какой почтовый сервер у вас есть, проще всего было бы подключать входящие сообщения к вашему сценарию, как сказал Квентин. Я использую exim, и все, что мне нужно было сделать, это создать файл valiases для моего домена, который выглядит так: *: "|/home/site/process_mail.php" и оттуда mailparse выполняет большую часть тяжелой работы, и я имею дело с сообщение и добавить его в базу данных.