Как получить электронную почту и обработать ее в веб-приложении - PullRequest
52 голосов
/ 08 июня 2009

Я настроил адрес электронной почты для моего веб-приложения на PHP. Пользователи будут отправлять электронные письма на этот идентификатор.

Я хочу обработать эти письма в приложении. Как мне это сделать?

Заранее спасибо.

Ответы [ 11 ]

49 голосов
/ 09 июня 2009

Я недавно работал над проектом, который требовал парсинга электронной почты из gmail и обновления базы данных с определенными значениями, основанными на содержании электронной почты. Я использовал библиотеку ezcMail (сейчас) Zeta Components , чтобы подключиться к почтовому серверу и проанализировать электронную почту.

Стратегия, которую я принял, состояла в том, чтобы отфильтровать всю интересующую входящую почту с пометкой «необработанный». Запускать PHP-скрипт через crontab каждые 15 минут. Сценарий подключится к почтовому серверу, откроет необработанную папку IMAP и проанализирует каждое письмо. После вставки интересных значений в базу данных сценарий перемещает файлы в другую папку IMAP «Обработано».

Я также обнаружил, что IMAP лучше, чем POP для такого рода обработки.

15 голосов
/ 17 июля 2012

Недавно я хотел иметь возможность сразу получать электронные письма о чем-то, что я делал, поэтому я провел некоторое исследование (на самом деле я тоже пришел к этому вопросу), и в итоге я обнаружил, что Google App Engine очень полезен. Он имеет API, который вы можете использовать для получения и обработки электронных писем, отправленных на ____@yourapp.appspotmail.com. Я знаю, что это не кажется полезным, так как вы, вероятно, не хотите, чтобы ваше приложение работало в App Engine, и вы хотите получать электронные письма на yourdomain.tld, но с небольшой настройкой вы можете получить то, что вы хотите.

Моя базовая настройка выглядит так:

  • Пользователь отправляет электронное письмо на user_id@mydomain.tld (адрес электронной почты, который на самом деле не существует)
  • mydomain.tld имеет адрес электронной почты для переадресации, который пересылается по адресу inbox@GAEapp.appspotmail.com
  • GAEapp (крошечное приложение на движке приложений) получает электронную почту, обрабатывает ее и отправляет запрос на публикацию с соответствующими материалами в mydomain.tld

Таким образом, вы можете создать небольшое приложение GAE, которое будет работать как перехватчик писем. Даже с редиректом все будет хорошо, электронная почта будет в порядке.

Также я решил научить меня некоторому джанго и сделал бесплатное приложение под названием Электронная почта , которое в основном сделает это за вас. Вы создаете получателя, такого как ___@emailization.com, и даете URL для POST. Все, что отправлено на этот адрес, размещается на вашем URL. Вы можете сделать ловушку на своем домене, которая переадресует получателю электронной почты, и вы тоже получите почту через ловушку!

или вы можете увидеть маленькое приложение GAE Я сделал так, что вы можете настроить себя так же.

Надеюсь, это кому-нибудь поможет!

14 голосов
/ 11 июня 2009

Используйте procmail, если он установлен в вашей системе. Поместите эти строки в файл .procmailrc в домашнем каталоге пользователя, который получает электронное письмо.

:0
| /path/to/your/script.php

Или вы также можете использовать файл .forward, содержащий

"|/path/to/your/script.php"

Преимущество Procmail в том, что оно позволяет вам работать с более сложной фильтрацией, если это требуется вашему приложению.

Ваш файл script.php будет считывать заголовки и текст письма со стандартного ввода.

7 голосов
/ 06 июля 2010

Выезд fMailbox . Он не требует каких-либо нестандартных расширений (таких как imap) и был протестирован с различными серверами, вложениями, составными сообщениями, SSL и т. Д.

6 голосов
/ 08 июня 2009

Я предлагаю использовать Zend_Mail компонент Zend Framework.

4 голосов
/ 22 марта 2011

Есть отличная библиотека: Попробуйте это: http://code.google.com/p/php-imap

3 голосов
/ 08 июня 2009

Вам необходимо реализовать почтовый клиент на Php. Вероятно, это будет POP клиент.

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

Быстрый поиск в Google по запросу "POP client php" выявил множество различных вариантов. Трудно сказать, существует ли на самом деле «One True PHP POP Library», иначе я бы включил ее сюда. Если вы используете уже существующую платформу, вы можете проверить ее уровень поддержки POP, в противном случае проверьте результаты Google выше и сделайте свой выбор. Или это может быть просто (и наиболее образовательным :)), чтобы бросить свой собственный.

2 голосов
/ 26 мая 2014

Размещенные решения как Трэвис Остин предложил работать хорошо.

Если вы ищете самодостаточный, вы можете взглянуть на модуль Mailin , который позволяет вам получать электронные письма, анализировать их и публиковать в выбранном вами веб-крюке. Он также проверяет dkim и spf вычисляет балл spamassassin и определяет язык сообщений.

Я не знаю, будет ли он соответствовать вашим потребностям, поскольку он написан в файле node.js, но чем больше у вас вариантов, тем лучше. (Отказ от ответственности: я хранитель Mailin) ​​

2 голосов
/ 27 ноября 2013

Для этого есть отличный учебник:

http://www.evolt.org/incoming_mail_and_php

, который описывает, как пересылать электронные письма непосредственно в ваш скрипт, который ваш скрипт читает через stdin (fopen, fread и т. Д.). Код учебника даже выполняет базовый синтаксический анализ заголовка / тела для вас.

2 голосов
/ 27 июля 2013

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

Вы просто создаете скрипт, который получает сообщение FORM POST и делает с ним все, что вам нужно.

Вы также можете посмотреть на Mandrill (от MailChimp), SendGrid и PostMarkApp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...