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.
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
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. –