Как я могу разобрать электронные письма в режиме реального времени, как они получены

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

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

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

3 ответа

Решение

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

Предполагая, что вы используете 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 mailparse на веб-сайте уже несколько лет, и это было здорово.

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

В загрузочном файле есть пример файла try.php, с которого я смог начать.

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

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