Как я могу разобрать электронные письма в режиме реального времени, как они получены
Мне нужно создать скрипт парсинга электронной почты, который будет анализировать электронные письма, которые поступают в почтовый ящик и выгружать содержимое в базу данных, и в то же время делать запрос скручивания с деталями, проанализированными из электронного письма.
На данный момент я застрял в реализации части о том, как анализировать электронные письма в режиме реального времени, как они поступают в почтовый ящик. Есть ли способ установить триггеры, чтобы сделать что-то подобное? У меня большой опыт работы с клиентами веб-почты на основе 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 выполняет большую часть тяжелой работы, и я разбираюсь с сообщением и добавляю его в базу данных.