Как я могу разобрать электронные письма в реальном времени, как они получены - PullRequest
2 голосов
/ 24 сентября 2011

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

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

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

Ответы [ 3 ]

6 голосов
/ 24 сентября 2011

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

Если вы используете cPanel, выполните следующие действия: steps :

  • Войдите в вашу 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 . '"');

?>
5 голосов
/ 24 сентября 2011

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

1 голос
/ 24 сентября 2011

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

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

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

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

...