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