Jak otrzymać e-mail i przetworzyć go w aplikacji internetowej

Skonfigurowałem e-mail id mojej aplikacji internetowej PHP. Użytkownicy będą wysyłać e-maile na ten identyfikator.

Chcę przetworzyć te e-maile w aplikacji. Mam to zrobić?

Z góry dzięki.

 52
Author: Jonathan Leffler, 2009-06-08

11 answers

Ostatnio pracowałem nad projektem, który wymagał przetwarzania wiadomości e-mail z Gmaila i aktualizacji bazy danych z pewnymi wartościami na podstawie zawartości wiadomości e-mail. Użyłem ezcMail (Teraz) Zeta Components biblioteka do łączenia się z serwerem pocztowym i analizowania wiadomości e-mail.

Przyjętą strategią było filtrowanie wszystkich interesujących wiadomości przychodzących etykietą "nieprzetworzona". Uruchom skrypt PHP za pomocą crontab co 15 minut. Skrypt połączy się z serwerem pocztowym i otwórz nieprzetworzony folder IMAP i przeanalizuj każdy e-mail. Po włożeniu interesujących wartości do bazy danych skrypt przenosi pliki do innego folderu IMAP "Proccessed".

Znalazłem również IMAP jest lepszy niż POP dla tego rodzaju przetwarzania.

 49
Author: Shoan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-30 16:26:37

Ostatnio chciałem być w stanie otrzymywać e-maile od razu w czymś, co robiłem, więc zrobiłem trochę badań (przyszedłem patrząc na to pytanie tutaj też faktycznie) i skończyło się znalezienie Google App Engine być bardzo pomocne. Posiada api, którego możesz używać do odbierania i przetwarzania wiadomości e-mail wysyłanych do [email protected]. Wiem, że nie wydaje się to pomocne, ponieważ prawdopodobnie nie chcesz swojej aplikacji na silniku aplikacji i chcesz otrzymywać e-maile na yourdomain.tld, ale z małą konfiguracją można uzyskać to, co chcę.

Moja podstawowa konfiguracja wygląda tak:

  • użytkownik wysyła wiadomość e-mail do user_id @ mydomain.tld (adres e-mail, który tak naprawdę nie istnieje)
  • mydomain.tld ma adres e-mail, który przekazuje do [email protected]
  • [7]}GAEapp (mała aplikacja na silniku aplikacji) odbiera wiadomość e-mail, przetwarza ją i wysyła żądanie post z odpowiednimi rzeczami do mydomain.tld

Więc w zasadzie można zrobić małą aplikację GAE, która działa jak przejść między chwycić e-maile. Nawet z przekierowaniem to będzie działać ok, e-mail będzie w porządku.

Również postanowiłem nauczyć się django i zrobiłem darmową aplikację o nazwie Emailization , która w zasadzie zrobi to za Ciebie. Tworzysz odbiorcę, takiego jak [email protected] i podajesz adres URL, do którego chcesz pisać. Wszystko wysłane na ten adres zostanie wysłane do ciebie URL. Możesz zrobić catchall na swojej domenie, która jest przekazywana do tego odbiorcy wiadomości e-mail, a otrzymasz e-mail za pośrednictwem catchall zbyt!

Lub możesz zobaczyć mała aplikacja GAE zrobiłem, że możesz skonfigurować siebie, który robi to samo.

Mam nadzieję, że to komuś pomoże!
 15
Author: Capitao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-17 04:46:24

Użyj procmaila, jeśli jest zainstalowany w Twoim systemie. Umieść te linie w a .plik procmailrc w katalogu domowym użytkownika, który otrzymuje wiadomość e-mail.

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

Lub możesz również użyć a .plik forward zawierający

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

Procmail ma tę zaletę, że pozwala radzić sobie z bardziej skomplikowanym filtrowaniem, jeśli Twoja aplikacja kiedykolwiek tego wymaga.

Twój scenariusz.plik php odczyta nagłówki i treść wiadomości e-mail ze standardowego wejścia.
 14
Author: bmb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 19:26:30

Sprawdź fMailbox. Nie wymaga żadnych niestandardowych rozszerzeń (takich jak imap) i został przetestowany z różnymi serwerami, załącznikami, wiadomościami wieloczęściowymi, SSL i innymi.

 7
Author: ToughPal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-06 16:03:36

Sugeruję użycie zend_mail komponentu Zend Framework.

 6
Author: farzad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-08 14:50:55

Jest świetna biblioteka: spróbuj tego: http://code.google.com/p/php-imap

 4
Author: barbushin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 08:54:27

Musisz zaimplementować klienta poczty elektronicznej w Php. To prawdopodobnie będzie Klient POP .

Ten kod odpytywałby serwer POP zawierający twoją wiadomość e-mail, pobrałby ją, a następnie mógłbyś ją przeanalizować w razie potrzeby.

Szybkie wyszukiwanie w google "Pop client php" ujawniło szeroki wachlarz różnych opcji. Trudno powiedzieć, czy istnieje naprawdę "the One True PHP Pop Library", w przeciwnym razie chciałbym to tutaj. Jeśli używasz wcześniej istniejącego frameworka, możesz sprawdzić, czy jego poziom obsługi POP, w przeciwnym razie sprawdź wyniki google powyżej i wybierz. A może po prostu najłatwiej (i najbardziej edukacyjnie :) ) wywalić własne.

 3
Author: Doug T.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-08 14:45:53

Istnieje wiele hostowanych rozwiązań, które akceptują wiadomości e-mail dla Twojej domeny, a następnie publikują skrypt na twojej stronie. Większość z nich zajmie się analizowaniem wiadomości za Ciebie (oddzielanie załączników, "do" "OD" i innych adresów, itp.).

Po prostu tworzysz skrypt, który otrzymuje formularz POST i robi z nim wszystko, czego potrzebujesz.

Możesz również spojrzeć na Mandrill (przez MailChimp), SendGrid, i PostMarkApp.

 2
Author: Travis Austin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-27 18:37:13

Jest do tego świetny tutorial:

Http://www.evolt.org/incoming_mail_and_php

Który opisuje sposób przekazywania wiadomości e-mail bezpośrednio do skryptu, które twój skrypt odczytuje poprzez stdin (fopen, fread, itp.) Kod samouczka robi nawet podstawowe parsowanie nagłówka / ciała dla Ciebie.

 2
Author: Vern Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 20:28:36

Hosted solutions as Travis Austin suggested work well.

Jeśli szukasz hostingu własnego, możesz spojrzeć na Mailin moduł pozwala odbierać e-maile, analizować je i publikować je na webhooku swojego choice.It sprawdza również DKIM i spf, oblicza wynik spamassassin i określa język wiadomości.

Nie wiem, czy będzie odpowiadał Twoim potrzebom, ponieważ jest napisany w node.js, ale im więcej masz opcji, tym lepiej. (Zastrzeżenie: Jestem opiekunem Mailin)

 2
Author: Flolagale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:22

Jeśli chcesz uniknąć dotarcia przez POP lub IMAP do innego serwera, aby wyświetlić wiadomość e-mail, możesz dodać "hook" do procesu odbierania wiadomości e-mail na pewnym skonfigurowanym serwerze SMTP (prawdopodobnie tym samym serwerze php). Następnie wystarczy mieć Adres Docelowy obsługiwany przez ten serwer.

Oto przykład z postfixem, ale podobne rzeczy są możliwe również z sendmailem.
http://www.adkap.com/autoresponder.html

 1
Author: justinb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-08 16:51:15