Как мне получать электронную почту и обрабатывать ее в веб-приложении


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

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

Заранее благодарю.

 52
Author: Jonathan Leffler, 2009-06-08

11 answers

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

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

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

 49
Author: Shoan, 2013-05-30 16:26:37

Недавно я хотел иметь возможность немедленно получать электронные письма в том, что я делал, поэтому я провел некоторое исследование (на самом деле я тоже искал этот вопрос здесь), и в итоге я обнаружил, что движок приложений Google довольно полезен. У него есть api, который вы можете использовать для получения и обработки электронных писем, отправленных на [email protected]. Я знаю, что это на самом деле не кажется полезным, так как вы, вероятно, не хотите, чтобы ваше приложение было в App Engine, и вы хотите получать электронные письма на свой домен.tld, но с небольшой настройкой вы можете получить то, что вам нужно хотеть.

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

  • Пользователь отправляет электронное письмо на [email protected] (адрес электронной почты, которого на самом деле не существует)
  • домен mydomain.tld имеет общий адрес электронной почты, который перенаправляется на [email protected]
  • gaeapp (крошечное приложение на движке приложений) получает электронное письмо, обрабатывает его и отправляет запрос post с соответствующими материалами в mydomain.tld

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

Также я решил немного выучить джанго и создал бесплатное приложение под названием Рассылка по электронной почте, которое в основном сделает это за вас. Вы создаете получателя, подобного [email protected], и даете URL-адрес для ПУБЛИКАЦИИ. Все, что отправляется на этот адрес, отправляется на ваш URL-адрес. Вы можете создать в своем домене список рассылки, который будет перенаправляться получателю электронной почты, и вы также будете получать электронную почту через этот список рассылки!

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

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

 15
Author: Capitao, 2012-07-17 04:46:24

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

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

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

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

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

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

 14
Author: bmb, 2012-03-19 19:26:30

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

 7
Author: ToughPal, 2010-07-06 16:03:36

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

 6
Author: farzad, 2009-06-08 14:50:55

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

 4
Author: barbushin, 2011-03-22 08:54:27

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

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

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

 3
Author: Doug T., 2009-06-08 14:45:53

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

Вы просто создаете скрипт, который получает СООБЩЕНИЕ ФОРМЫ и делает с ним все, что вам нужно.

Вы также можете посмотреть на Мандрилла (по почте), SendGrid и почтовое приложение.

 2
Author: Travis Austin, 2013-07-27 18:37:13

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

Http://www.evolt.org/incoming_mail_and_php

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

 2
Author: Vern Jensen, 2013-11-26 20:28:36

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

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

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

 2
Author: Flolagale, 2017-05-23 12:25:22

Если вы хотите избежать обращения по POP или IMAP к другому серверу для отправки электронной почты, вы можете добавить "крюк" в процесс получения электронной почты на каком-либо настроенном вами SMTP-сервере (возможно, на том же php-сервере). Затем просто отправьте адрес электронной почты назначения на этот сервер.

Вот пример с постфиксом, но аналогичные вещи возможны и с sendmail.
http://www.adkap.com/autoresponder.html

 1
Author: justinb, 2009-06-08 16:51:15