2009-03-30 5 views
7

Eine Reihe von Anwendungen haben die praktische Funktion, Benutzern zu ermöglichen, auf Benachrichtigungs-E-Mails von der Anwendung zu reagieren. Die Antworten werden in die Anwendung zurückgespült.Richtlinien zum Akzeptieren von E-Mail-Nachrichten als Eingabe für die Anwendung

Wenn Sie beispielsweise ein Kunden-Support-System erstellen, enthält die E-Mail wahrscheinlich ein Token, um die Antwort mit dem richtigen Service-Ticket zu verknüpfen.

Was sind einige Richtlinien, Hinweise und Tipps zur Implementierung dieser Art von System? Was sind mögliche Fallstricke zu beachten? Hoffentlich können diejenigen, die solche Systeme implementiert haben, ihre Weisheit teilen.

Antwort

10

Einige Richtlinien und Überlegungen:

Die Adresse Frage: Das Beste, was zu tun ist, um den „+“ Verlängerungsteil einer E-Mail (myaddr**+custom**@gmail.com) Adresse zu verwenden. Dies macht es einfacher zu routen, aber vor allem einfacher, den Adress-Routing zu Ihrem System zu verfolgen. Andere Techniken verwenden möglicherweise einen Token im Betreff

Spam: Führen Sie die Spam-Verarbeitung außerhalb der App aus und lassen Sie den App-Filter auf einer Kopfzeile basieren.

Queuing fehlgeschlagene Nachrichten: Nicht zum größten Teil. Das Standard-E-Mail-Verhalten besteht darin, bis zu drei Tage zu versuchen, eine Nachricht zuzustellen. Für einen Anwendungs-E-Mail-Server werden nur riesige Spool-Dateien von E-Mails erstellt, die Sie wahrscheinlich nie verarbeiten werden. Nachrichten nur dann in die Warteschlange stellen, wenn die Fehlergründe nicht von Ihnen gesteuert werden (z. B. Server ist inaktiv).

Ungültige Nachrichtenbehandlung: Es gibt mehrere Möglichkeiten, wie eine Nachricht ungültig sein kann. Einige sind Einschränkungen der Bibliothek (sie kann die Adresse nicht analysieren, obwohl sie eine gültige RFC ist). Andere sind wegen gebrochener Clients (z. B. das Weglassen von Anführungszeichen um bestimmte Header). Andere könnten zu groß sein oder eine unbekannte Kodierung verwenden, kritische Header fehlen, mehrere Werte haben, wo es nur einen geben sollte, einige Semantiken verletzen, die für Ihre Anwendung spezifisch sind, etc, usw., usw. Grundsätzlich ist die Java-Mail-API könnte eine Ausnahme auslösen ist eine Fehlerbehandlung Fall Sie müssen bestimmen, wie Sie entsprechend umgehen.

Fehler Antworten: Nicht jeder Fehler verdient eine Antwort. Einige werden aufgrund von Spam generiert, und Sie sollten es vermeiden, Nachrichten an diese Adressen zu senden. Andere stammen aus automatisierten Systemen (Sie selbst, ein Ferienbetreuer, ein anderes Anwendungs-E-Mail-System usw.), und wenn Sie antworten, wird Ihnen eine weitere Nachricht gesendet, die den Zyklus wiederholt.

Clientspezifische Hacks: Wie oben erwähnt, hat jeder Client kleine Unterschiede, die Ihren Code komplizieren. Denken Sie immer daran, wenn Sie die Struktur einer Nachricht durchqueren.

Absendern, Antworten und Schleifen: Je nach Situation können Sie E-Mails von einigen der folgenden Quellen erhalten:

  • Echte Menschen, vielleicht aus anderen Quellen
  • Mailinglisten
  • Sie selbst oder eine Ihrer eigenen Empfängeradressen
  • Andere Mailserver (Bounces, Fehler usw.)
  • Entität in einem anderen System (my- [email protected], System-Monitor @ localhost)
  • Ein automatisiertes System
  • Ein Alias ​​zu einer der oben
  • einen Alias ​​zu einem Alias ​​

nun Ihr erster Instinkt ist, wahrscheinlich "Nur E-Mails von richtigen Quellen annehmen!", aber das wird Ihnen viele Kopfschmerzen bereiten, weil die Leute die verdammten Dinge an einen Anwendungs-Mail-Server senden. Ich finde es besser, alles zu akzeptieren und die Ausnahmen explizit zu leugnen.

Debugging: Speichern Sie eine Kopie der Header jeder Nachricht, die Sie erhalten. Dies wird enorm helfen, wenn Sie ein Problem haben.

--Edit--

kaufte ich das Buch, skalierbare Web-Sites Gebäude, das von rossfabricant erwähnt. Es hat einen guten E-Mail-Bereich. Ein paar wichtige Punkte, die es geht, sind die Handhabung von E-Mails von Mobilfunkanbietern und die Authentifizierung von E-Mails.

2

Sie können die Adresse festlegen, von der die E-Mail gesendet wird, die in die An: -Adresse eingegeben wird, wenn jemand nur 'Reply-to' drückt. Machen Sie das einzigartig, und Sie werden feststellen können, woher es kam und wohin es zurückgeführt werden muss.

Wenn es darum geht, einen Namen daneben zu setzen, "etwas hier" - etwas einladend machen, damit sie einfach auf die Mail antworten. Ich habe eine große Web-App gesehen, mit E-Mail-Erfassung, die nicht antwortet, was die Leute davon abhält, tatsächlich etwas zu senden.

+0

Es scheint die einzigartige Antwort-to-Approach nimmt eine faire Menge an Flexibilität mit Ihrem Mail-Server-Setup. Vielleicht können andere auf Erfahrung mit diesem Ansatz sowie Alternativen, wenn Sie eingeschränkte Kontrolle über Ihren Mail-Server haben. Oder vielleicht verstehe ich die Voraussetzungen für diesen Ansatz falsch. – Larsenal

+1

Sie brauchen etwas Kontrolle - oder zumindest der richtige Mail-Server läuft. Postfix ermöglicht zum Beispiel "+ Adressierung", so dass [email protected] zum selben Konto wie Beispiel [email protected] geht. Sogar das Lesen von dem POP3-Konto, das landen würde, würde den einzigartigen Bezug geben. –

1

EDIT: Ich habe Ihre Frage missverstanden.

Sie können Ihren E-Mail-Server so konfigurieren, dass er alle auffängt und eine eindeutige Antwortadresse generiert. Z.B. [email protected]

Ein Abrufvorgang auf dem Server konnte den Posteingang lesen und den relevanten Teil aus der empfangenen E-Mail auslesen, CS-2143434 könnte Kunden-Support-Ticket-ID-Nr. 2343434.

Ich habe so etwas mit JavaMail API implementiert.

Nur ein Gedanke.

+0

Das ist nicht gerade die Art von was ich rede. Ich denke daran, in Outlook auf "Antworten" zu klicken und Ihre App in die E-Mail-Antwort schlürfen zu lassen. Ihre Antwort veranschaulicht lediglich die Idee, sinnvolle, spezifische URLs in die E-Mail-Nachricht einzubetten. – Larsenal

0

Bose hat ein ziemlich großes System, in dem sie eine Queue und Ticket-ID in die E-Mail selbst einbetten.

Meine Firma hat die traditionelle Case # in der Betreffzeile, aber beim Erstellen eines Falles, erfordern eine bestimmte Zeichenfolge "New Case" "Tech Support Problem" in der Betreffzeile, um durch die Spam-Filter.

Wenn die E-Mail nicht mit der Semantik zum Erstellen oder Aktualisieren übereinstimmt, sendet der Autoresponder eine E-Mail an den Empfänger zurück, die zeigt, wie eine E-Mail korrekt gesendet wird, oder leitet sie an unser Forum oder unsere Website weiter.

Es hilft bei der Beseitigung des Spam-Problems und ist dennoch für eine breite technische Zielgruppe zugänglich, die immer noch stark von E-Mails abhängig ist.

0

Spam wird ein wenig Besorgnis sein. Da Sie die Konversation jedoch initiieren, können Sie das Vorhandensein Ihrer eindeutigen Kennung verwenden (ich bevorzuge die Verwendung der Betreffzeile - "Trouble Ticket: Kann mich nicht im Web anmelden ... [artf123456]"), um Spam herauszufiltern. Achten Sie darauf, den Filter gelegentlich zu überprüfen, da einige Leute das Thema bei der Antwort mangeln.

0

E-Mail ist eine Jauchegrube von schlechten Standards und defekten Clients. Sie müssen bereit sein, fast alles als Input zu akzeptieren. Sie müssen sehr verzeihend sein, welche Arten von Eingaben toleriert werden. Alles, was für Sie leicht zu programmieren ist, wird wahrscheinlich für Ihre Benutzer schwer zu benutzen sein. Betrachten Sie die alten Mailinglistenprogramme, bei denen Sie Befehle in der Betreffzeile eingeben müssen. Nur Hardcore-Nerds können diese effektiv nutzen. Und einige der Probleme, die Sie mit CRM-Problemen haben, haben bizarre Anforderungen, zum Beispiel, dass der Benutzer gezwungen wird, zwischen zwei bestimmten Textmarkierungen im Text zu antworten. So etwas verwirrt die Menschen.

Sie müssen mit E-Mail-Clients arbeiten, die Ihnen formatierten Text anstelle von Nur-Text senden. Einige E-Mail-Clients bearbeiten HTML immer noch nicht ordnungsgemäß (hust GMail), sodass Ihre Antworten ebenfalls entsprechend gestaltet werden müssen. Es gibt verschiedene Möglichkeiten, Fotos auch per E-Mail "hochzuladen", insbesondere wenn es sich um Mobiltelefone handelt. Sie müssen verschiedene Hacks und Heuristiken implementieren, um mit diesen Situationen umzugehen.

Es ist auch durchaus möglich, dass Sie E-Mails erhalten, die zwar gültig sind, aber von der verwendeten E-Mail-Parsing-Bibliothek nicht verwendet werden können. Ob das wichtig genug ist, um selbst zu rollen, ist ein Urteilsspruch.

Schließlich haben andere die Verwendung bestimmter E-Mail-Adressen erwähnt, um eine "Konversation" eindeutig zu identifizieren. Dies ist wahrscheinlich der einfachste Weg, um dies zu tun, da der Inhalt der Mail eine Rundreise zu einem Kunden oft nicht überleben wird. Bereiten Sie sich jedoch darauf vor, alte Kunden, die, anstatt ein neues Ticket irgendwie zu öffnen, auf ein altes Ticket antworten. Ihre Anwendung wird wahrscheinlich einen Weg brauchen, um E-Mails mit einer alten ID in einen neuen Fall zu schieben, entweder manuell oder automatisch. Für ein CRM-System ist es sehr wahrscheinlich, dass ein Benutzer auf eine alte E-Mail antwortet, auch wenn Sie ihm bereits eine neue E-Mail mit einer neuen ID gesendet haben. Wenn Sie [email protected] oder nur [email protected] verwenden möchten, würde ich mit letzterem gehen, weil das Plus-Zeichen einige E-Mail-Clients verwirrt. Machen Sie Ihre ID-Guides oder etwas und haben Sie eine Möglichkeit, sie zu validieren (wie ein CRC oder etwas) und Sie werden weniger Müll bekommen. Menschen sollten niemals die GUIDs eingeben müssen, antworten Sie einfach auf sie. Der Nachteil ist die Spam-Filterung: Der Computer eines Benutzers sieht solche E-Mail-Adressen möglicherweise als Spam an, und es wäre nicht einfach, die Adressen auf die weiße Liste zu setzen.

Das erinnert mich: Senden von E-Mails in diesen Tagen ist voller Fallstricke. Es gibt viele Anti-Spam-Technologien, die es Ihnen sehr schwer machen, E-Mails an Ihre Kunden zu senden. Sie müssen alle diese untersuchen und Sie müssen vorsichtig sein, und einige Tests durchführen, um sicherzustellen, dass Sie die wichtigsten E-Mail-Anbieter erreichen können. Eine Website wie Campaign Monitor kann Ihnen helfen, wenn Sie E-Mails senden.

1

Der beste Weg, dies zu erreichen, besteht darin, einen Fensterdienst zu schreiben, der wie ein Mail-Client funktioniert [pop3 oder imap]. Dieser Windows-Dienst sollte eine zeitgesteuerte Aktion ausführen, die von einem Zeitgeber ausgelöst wird, der eine Verbindung mit dem Mail-Server herstellt und den Server nach ungelesenen Nachrichten abfragt, die im E-Mail-Posteingang verfügbar sind. Die E-Mail-ID, nach der gesucht werden soll, ist die E-Mail-ID, an die die Benutzer ihre Eingabe senden. Wenn der Windows-Dienstclient feststellt, dass neue E-Mails vorhanden sind, sollte er den E-Mail-Text herunterladen und filtern und weiter zur Verarbeitung auf der Basis der Benutzereingaben in der E-Mail verschieben.Sie können die Eingabeverarbeitung im selben Windows-Dienst hosten, dies ist jedoch nicht ratsam. Der Windows-Dienst kann die Eingaben in ein spezielles Anwendungsverzeichnis oder eine spezielle Datenbank stellen, von wo aus Ihre Hauptanwendung die in E-Mails empfangenen Benutzereingaben lesen und nach Bedarf verarbeiten kann.

Sie müssen dafür einen leistungsstarken TCP/IP-Client entwickeln. Ich rate Ihnen, die Standard-.Net-Bibliothek aufgrund von Leistungsproblemen nicht zu verwenden, stattdessen verwenden Sie eine der besten verfügbaren Open-Source-TCP/IP-Implementierungen für .NET wie XF.Server von kodart. Wir haben dies in unseren Anwendungen genutzt und bemerkenswerte Ergebnisse erzielt.

Hoffe, dass dies hilft ..

Verwandte Themen