Как получить электронную почту и обработать ее в веб-приложении
Я настроил идентификатор электронной почты моего веб-приложения PHP. Пользователи будут отправлять электронные письма на этот идентификатор.
Я хочу обработать эти письма в приложении. Хо я иду делать это?
спасибо заранее.
11 ответов:
недавно я работал над проектом, который требовал разбора электронной почты из gmail и обновления базы данных с определенными значениями на основе содержимого электронной почты. Я использовал
ezcMail(теперь) компоненты Дзета библиотека для подключения к почтовому серверу и разбор писем.стратегия, которую я принял, состояла в том, чтобы фильтровать всю интересную входящую почту с меткой "необработанная". Запустить PHP-скрипт через crontab-файл каждые 15 минут. Скрипт будет подключаться на почтовый сервер и откройте необработанную папку IMAP и проанализируйте каждое письмо. После вставки интересных значений в базу данных скрипт перемещает файлы в другую папку IMAP "Proccessed".
Я нашел IMAP, чтобы быть лучше, чем поп для такого рода обработки.
недавно я хотел иметь возможность получать электронные письма сразу в чем-то, что я делал, поэтому я сделал некоторые исследования (я пришел посмотреть на этот вопрос здесь тоже на самом деле), и я в конечном итоге нашел Google App Engine, чтобы быть довольно полезным. Он имеет api, который вы можете использовать для получения и обработки писем, отправленных на
____@yourapp.appspotmail.com
. Я знаю, что это не очень полезно, Так как вы вероятно не хотите, чтобы ваше приложение на App Engine и вы хотите получать письма на имя_домена.tld, но с небольшой настройкой вы можете получить то, что вы хотеть.моя базовая настройка выглядит так:
- пользователь отправляет электронное письмо на user_id@mydomain.дву (адрес электронной почты, который на самом деле не существует)
- мой_домен.tld имеет адрес электронной почты catchall, который пересылается inbox@GAEapp.appspotmail.com
- GAEapp (крошечное приложение на движке приложений) получает электронное письмо, обрабатывает его и отправляет запрос post с соответствующими материалами в mydomain.tld
Так что в основном вы можете сделать небольшое приложение GAE, которое работает как идти между, чтобы захватить электронные письма. Даже с перенаправлением он будет работать нормально, электронная почта будет в порядке.
также я решил узнать меня некоторые Django и я сделал бесплатное приложение под названием электронная почта это будет в основном делать это для вас. Вы создаете получателя как
___@emailization.com
и дать URL-адрес для публикации. Все, что отправляется на этот адрес, отправляется вам URL. Вы можете сделать catchall на своем домене, который перенаправляет получателю электронной почты, и вы получите электронную почту через слишком всеобъемлющий!или вы можете увидеть небольшое приложение GAE я сделал, что вы можете настроить себя, что делает то же самое.
надеюсь, что это поможет кому-то!
используйте procmail, если он установлен в вашей системе. Поместите эти строки в a .файл procmailrc в домашнем каталоге пользователя, который получает сообщение электронной почты.
:0 | /path/to/your/script.php
или вы также можете использовать a .переслать файл, содержащий
"|/path/to/your/script.php"
Procmail имеет то преимущество, что он позволяет вам иметь дело с более сложной фильтрацией, если ваше приложение когда-либо требует этого.
ваш скрипт.php файл будет читать заголовки и тело электронной почты из stdin.
проверить fMailbox. Он не требует каких-либо нестандартных расширений (таких как imap) и был протестирован с различными серверами, вложениями, составными сообщениями, SSL и многое другое.
Я предлагаю использовать Zend_Mail компонент Zend Framework.
есть отличная библиотека: попробуйте это:http://code.google.com/p/php-imap
вам нужно реализовать почтовый клиент в Php. Это, вероятно, будет POP клиент.
этот код будет запрашивать POP-сервер, содержащий вашу электронную почту, загружать его, а затем вы можете анализировать его по мере необходимости.
быстрый поиск google "POP client php"показал огромное количество различных вариантов. Трудно сказать, есть ли на самом деле "одна настоящая библиотека PHP POP", иначе я бы включил ее здесь. Если вы используете уже существующую структуру, вы можете хотите проверить, чтобы увидеть его уровень поддержки POP, в противном случае проверьте результаты google выше и сделайте свой выбор. Или это может быть просто проще (и самый образовательный:)), чтобы свернуть свой собственный.
есть ряд размещенных решений, которые будут принимать электронную почту для вашего домена, а затем разместить его скрипт на вашем сайте. Большинство из них будет обрабатывать разбор сообщений для вас (разделение вложений, "кому", "от" и других адресов и т. д.).
вы просто создаете скрипт, который получает сообщение формы и делает все, что вам нужно с ним.
вы также можете посмотрите на Mandrill (по MailChimp), SendGrid и PostMarkApp.
здесь есть отличный учебник для этого:
http://www.evolt.org/incoming_mail_and_php
Что касается того, как отправлять электронные письма непосредственно в ваш скрипт, который ваш скрипт читает через stdin (fopen, fread и т. д.) Учебник код даже делает основной разбор заголовка / тела для вас.
принимала решения как Тревис Остин предложил работать хорошо.
Если вы ищете резидентной, вы можете посмотреть Mailin модуль позволяет получать электронные письма, анализировать их и размещать их на веб-крючок вашего choice.It также проверяет dkim и spf, вычисляет оценку spamassassin и определяет язык сообщения.
Я не знаю, если это будет соответствовать вашим потребностям, так как он написан в узле.js, но чем больше вариантов у вас есть, тем лучше. (Отказ от ответственности: я являюсь сопровождающим Mailin)
Если вы хотите избежать обращения через POP или IMAP к другому серверу, чтобы вытащить электронную почту, вы можете добавить "крюк" в процесс получения электронной почты на каком-то настроенном SMTP-сервере (возможно, на том же php-сервере). Тогда просто есть адрес электронной почты назначения обрабатывается этим сервером.
вот пример с postfix, но подобные вещи возможны и с sendmail.
http://www.adkap.com/autoresponder.html