Как программно захватывать электронные письма? (как постер) - PullRequest
2 голосов
/ 30 декабря 2010

Мне нужно программно перехватывать электронные письма, а также любые файлы, которые прикрепляются к ним с помощью php. Кроме того, запуск задания cron - единственный способ продолжить проверку наличия новых писем или есть способ автоматического запуска некоторого кода при получении нового письма? Спасибо, любая помощь приветствуется!

Ответы [ 3 ]

2 голосов
/ 30 декабря 2010

Ко второй части вашего вопроса: если вы запускаете свой собственный почтовый сервер и хотите избежать опроса для получения новых сообщений, вы можете добавить запись в / etc / aliases, которая позволяет вашему MTA знать, что переадресовывать в ваш PHP-скрипт. вот так:

uploads: "|/usr/bin/php -q /var/flickr/uploads.php"

Эта запись будет указывать вашему MTA направлять любые электронные письма от uploads@example.com до uploads.php. Оттуда вы можете прочитать STDIN, проанализировать сообщение MIME и обработать его как вам угодно

(украдено из книги Кэла Хендерсона Создание масштабируемых сайтов . Я настоятельно рекомендую главу 6)

0 голосов
/ 30 декабря 2010

Вы смотрели, как Postie делает это для WordPress?

См. Также инструмент Fetchmail .

0 голосов
/ 30 декабря 2010

У меня есть приложение, которое делает именно это.

  1. Создайте демон (регулярно выполняемая программа) с именем InboxDownloader, который подключается к вашей папке входящих сообщений и проверяет сообщения. Если есть сообщения, пусть этот демон просто загрузит их и поместит в папку для дальнейшей обработки.
  2. Создайте еще один демон MailProcessor, который просматривает загруженные файлы и анализирует их. Для этого я использую сигнатуры на основе регулярных выражений, чтобы определить, какое сообщение пришло. У меня есть набор классов, каждый из которых регистрируется в качестве потенциального «обработчика» для этого типа сообщения, и, если сопоставление выполнено, выполняется метод «выполнить логику» обработчиков, и все содержимое метода передается ему ,
...