2009-06-08 2 views

Antwort

49

Ich habe kürzlich an einem Projekt gearbeitet, das das Parsen von E-Mails von Google Mail und das Aktualisieren der Datenbank mit bestimmten Werten basierend auf dem Inhalt der E-Mail erforderte. Ich benutzte die ezcMail (now) Zeta Components Bibliothek, um eine Verbindung zum Mail-Server herzustellen und die E-Mails zu analysieren.

Die Strategie, die ich adoptierte, bestand darin, alle interessanten eingehenden E-Mails mit einem Label "unverarbeitet" zu filtern. Führen Sie das PHP-Skript alle 15 Minuten über eine Crontab aus. Das Skript würde eine Verbindung zum Mail-Server herstellen und den unverarbeiteten IMAP-Ordner öffnen und jede E-Mail analysieren. Nach dem Einfügen der interessanten Werte in die Datenbank verschiebt das Skript die Dateien in einen anderen IMAP-Ordner "Processed".

Ich fand auch IMAP, besser zu sein als POP für diese Art der Verarbeitung.

+0

Danke für die Hilfe Shoan! – Niyaz

+5

Warum wird diese Antwort abgelehnt? – Shoan

+0

@Shoan Ich weiß, diese Antwort ist wirklich alt .... aber würden Sie etwas Code für mich posten? – pattyd

3

Sie müssen einen E-Mail-Client in PHP implementieren. Dies wird wahrscheinlich ein POP Client sein.

Dieser Code würde den POP-Server mit Ihrer E-Mail abfragen, herunterladen und dann nach Bedarf analysieren.

Eine schnelle Google-Suche von "POP-Client-PHP" hat eine große Auswahl an verschiedenen Optionen aufgedeckt. Es ist schwer zu sagen, ob es wirklich "The One True PHP POP-Bibliothek" gibt, sonst würde ich es hier aufnehmen. Wenn Sie ein bereits vorhandenes Framework verwenden, sollten Sie überprüfen, ob es den POP-Support unterstützt. Andernfalls überprüfen Sie die obigen Google-Ergebnisse und wählen Sie aus. Oder es kann einfach am einfachsten sein (und am meisten lehrreich :)), um Ihre eigenen zu rollen.

+1

Es gibt ein Net_POP3-Paket in http://pear.php.net, aber es ist alt (2005). – TonyUser

6

Ich empfehle die Verwendung von Zend_Mail Komponente von Zend Framework.

1

Wenn Sie nicht über POP oder IMAP auf einen anderen Server zugreifen möchten, um die E-Mail herunterzuziehen, können Sie auf einem von Ihnen eingerichteten SMTP-Server einen "Haken" in den E-Mail-Empfangsprozess einfügen (möglicherweise denselben php-Server)). Dann lassen Sie einfach die Ziel-E-Mail von diesem Server bearbeiten.

Hier ist ein Beispiel mit Postfix, aber ähnliche Dinge sind auch mit sendmail möglich.
http://www.adkap.com/autoresponder.html

14

Verwenden Sie procmail, wenn es auf Ihrem System installiert ist. Fügen Sie diese Zeilen in eine .procmailrc-Datei im Home-Verzeichnis des Benutzers ein, der die E-Mail erhält.

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

Oder Sie können auch eine ./oru/ard-Datei

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

Procmail den Vorteil hat, enthält, verwenden, die es Ihnen mit komplizierteren Filterung, wenn Ihre Anwendung immer es erfordert umgehen können.

Ihre script.php-Datei liest die Header und den Text der E-Mail von stdin.

+0

Und es gibt ein tolles Tutorial, das den oben erwähnten Prozess beschreibt: http://www.evolt.org/incoming_mail_and_php –

7

Auschecken fMailbox.Es erfordert keine nicht standardmäßigen Erweiterungen (wie imap) und wurde mit verschiedenen Servern, Anhängen, mehrteiligen Nachrichten, SSL und mehr getestet.

14

Vor kurzem habe ich E-Mails in der Lage sein wollte etwas in sofort empfangen ich so habe ich einige der Forschung machte (ich kam auf diese Frage suchen hier auch tatsächlich) und Am Ende fand ich Google App Engine sehr hilfreich. Es hat eine API, die Sie verwenden können, um E-Mails zu empfangen und zu verarbeiten, die an [email protected] gesendet werden. Ich weiß, dass es nicht wirklich hilfreich erscheint, da Sie Ihre App in App Engine wahrscheinlich nicht möchten und Sie möchten E-Mails auf Ihrer Domain.tld erhalten, aber mit ein wenig Setup können Sie bekommen, was Sie wollen.

Meine Grundeinstellung ist wie folgt:

  • Benutzer E-Mail (E-Mail-Adresse, die tatsächlich nicht existiert) [email protected] senden
  • mydomain.tld hat eine Catch-All E-Mail-Adresse, die vorwärts zu [email protected]
  • GAEapp (eine kleine App auf App Engine) empfängt die E-Mail, verarbeitet sie aus und sendet eine Post-Anforderung mit den entsprechenden Sachen

So basicall mydomain.tld Sie können eine kleine GAE-App erstellen, die wie ein Zwischenspeicher funktioniert, um die E-Mails abzurufen. Selbst mit der Weiterleitung wird es funktionieren, die E-Mail wird in Ordnung sein.

Auch ich entschied mich, etwas Django zu lernen, und ich machte eine kostenlose App namens Emailization, die das für Sie tun wird. Sie erstellen einen Empfänger wie [email protected] und geben eine URL zu POST an. Alles, was an diese Adresse gesendet wird, wird an Ihre URL gesendet. Sie können in Ihrer Domain einen Catchall erstellen, der an diesen E-Mail-Empfänger weiterleitet, und Sie erhalten E-Mails auch über das Catchall!

oder Sie können eine small GAE app Ich habe festgestellt, dass Sie sich einrichten können, die das gleiche tut.

Hoffe, dass jemand hilft!

+0

Sie sind ein Genie !!! –

+0

Ich mag diese Idee wirklich, danke. –

2

Es gibt eine Reihe von gehosteten Lösungen, die E-Mails für Ihre Domain akzeptieren und dann ein Skript auf Ihrer Website veröffentlichen. Die meisten von ihnen werden die Analyse der Nachrichten für Sie übernehmen (Trennen der Anhänge, "zu" "von" und andere Adressen, etc.).

Sie erstellen einfach ein Skript, das einen FORM POST empfängt und tut, was Sie damit brauchen.

können Sie auch bei Mandrill sehen (von MailChimp), SendGrid und PostMarkApp.

+1

Mailgun war genau das, was ich brauchte, und sie haben eine sehr großzügige kostenlose Stufe! – mattl

2

Es ist ein großes Tutorial für diese hier:

http://www.evolt.org/incoming_mail_and_php

, die beschreibt, wie die E-Mails direkt an das Skript weitergeleitet haben, die Ihr Skript über stdin liest (fopen, fread, etc.) Die Tutorial-Code macht sogar grundlegende Analyse der Header/Körper für Sie.

2

Gehostete Lösungen wie Travis Austin vorgeschlagen funktionieren gut.

Wenn Sie nach einem selbst gehosteten suchen, können Sie sich das Mailin Modul ansehen, mit dem Sie E-Mails empfangen, analysieren und an einen Webhook Ihrer Wahl senden können. Es werden auch die dkim und spf überprüft. berechnet einen Spamassassin-Score und bestimmt die Nachrichtensprache.

Ich weiß nicht, ob es Ihren Bedürfnissen entspricht, da es in node.js geschrieben ist, aber je mehr Optionen Sie haben, desto besser. (Haftungsausschluss: Ich bin der Betreuer von Mailin) ​​

Verwandte Themen