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

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

Я хочу обработать эти письма в приложении. Хо, я собираюсь сделать это?

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

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

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

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

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

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

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

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

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

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

Недавно я хотел иметь возможность получать электронные письма сразу в том, что я делал, поэтому сделал некоторые исследования (я тоже на этот вопрос смотрел этот вопрос), и в итоге я нашел 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 и ___@emailization.com URL-адрес POST. Все, что отправлено на этот адрес, получает URL-адрес POSTed. Вы можете сделать учетную запись в своем домене, которая будет отправлена ​​этому получателю электронной почты, и вы также получите электронную почту через учетную запись!

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

Надеюсь, что кто-то поможет!

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

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

Существует большая библиотека: попробуйте это: http://code.google.com/p/php-imap

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

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

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

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

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

  • Mailgun
  • CloudMailin

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

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

http://www.evolt.org/incoming_mail_and_php

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

Хостинг решений, как Тревис Остин предложил работу хорошо.

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

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

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

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