Ich habe die Erläuterung verschiedener Arten von E -Mails zusammengefasst: 1. Netzwerk; im folgenden Artikel vorgelegt.
Der Mailbox des Unternehmens verwendet derzeit Zimbra. Nach dem Testen können alle 100 Mails etwa 98 Abschnitte gesendet werden.
Testfall 1: 100 Siegel, die Gesamtzeit beträgt ungefähr: 16 Minuten;
Testfall 2: 100 Siegel, die Gesamtzeit beträgt etwa 16 Minuten; Fügen Sie den Fehlermechanismus für das Versagen hinzu und warten Sie, bis 10s nach dem Versagen bis zu dreimal wiedergegeben werden.
Testfall 3: Jeder Abschnitt wird ausgestellt, bleibt 10 Sekunden und dauert insgesamt 32 Minuten.
Für das Problem der MessagingException können Sie sich beziehen:
javax.mail.messagingException: konnte keine Verbindung zum SMTP -Host herstellen
Als Antwort auf diese Art von Problem habe ich die E -Mail hinzugefügt, um sie wieder zu senden.
if (sendhtmlmail_ (mail)) {return true;} else {int i = 0; InterruptedException e) {Logger.Error ("Relying Mail -Fehler", e);}} return true;} Dieser Mechanismus hat jedoch ein neues Problem verursacht. per E -Mail und Teil der E -Mail.
Als Reaktion auf die oben genannten Probleme entfernen wir den Mechanismus zur Wiedergabe und entfernen ihn nur für illegale E -Mails (dh der E -Mail -Adresse, die auf dem Server nicht vorhanden ist) und senden Sie ihn dann nach dem Entfernen. Die E -Mail -Sendungsfehler, die durch andere Gründe verursacht wird, wird nicht wiedergegeben (das Problem wird dem Hersteller über die Abteilung für Mailserverbetrieb und Wartung gemeldet).
Das Folgende ist die Logik der Feststellung, ob die Mail legal ist:
1. SMTP ist in zwei Fällen: Erstens wird die E -Mail vom Client auf den Server übertragen.
2. SMTP ist ein Anforderungs-/Antwortprotokoll. Die Antwort enthält einen Dreier -Code, der den Rückgabestatus darstellt
3. SMTP bei der TCP -Vereinbarung Nr. 25, der Mundüberwachungsanfrage,
4. Verbindungs- und Sendungsprozess
Das SMTP -Protokoll ist nicht kompliziert oder kompliziert und es ist einfach, wenn Sie den Sockel kennen. Jetzt verwenden wir nur das, was wir im ersten Artikel verwenden, wenn der Client an den Server übertragen wird.
5 Die Schritte der Operation sind wie folgt:
Port 25 mit dem Server verbunden (falls es keinen Mail -Dienst gibt, auch die weiße Verbindung)
Senden Sie Helo -Grüße aus dem Befehl.
Senden Sie den Befehl RCPT.
Der spezifische Code lautet wie folgt:
Java.io.*; String Line = NULL; Text) wandert ioException {wr .write (text + "/r/n"); = Neuer Hashtable (); }); |. Werfen namingExcepti (auf "No Match for Name '" + Hostname + "'"); ArrayList res = new ArrayList (); ******************************************************** ******************************************************** ******************************************************** ******************************************************** *, (f [1] .ndswith (".") mailhost = f [1] .substring (0, (f [1]. () - 1)); else mailhost = f [1]; // die Fix **************** Indexof ('@'), wenn die Adresse kein '@' enthält, ist es nicht Wert, wenn (pos == -1) false zurückgeben; Xchangers String Domain = address.substring (++ pos); // Adresse ist Wert, aber wenn wir nicht können, ist es ein Zeichen dafür, dass dies nicht der Fall ist (mxlist.size () == 0) RECHTEN SIE FALSE; Erhalten Sie // eine positive Accountwase. OME // Die Präferenz berücksichtigen. ); Rgagnon.com "); res = hör (RDR); if (res! = 250) neue Ausnahme (" nicht ESMTP "); .com> "); res = hör (rdr); if (res! = 250) neue Ausnahme (" Absender Ted "); sagen (wtr," rcpt to: <" + adresse +"> ">"); res = hör (RDR); "Adresse ist kein Wert!"); ;} Endlich {if (gültig) return true;}} public atic void main (String args []) {String testData [] = {"[email protected]", "[email protected]", "Regierungsadresse" [email protected] "// Fehler dieser Methode}; für (int ctr = 0; ctr <testData.length; ctr ++) {System.out.println (testData [ctr] +" ist vali d? " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IsaddressValid (testData [ctr]);} return;}}Die oben genannte Logik, um festzustellen, ob die Mail -Adresse legal ist.
Private statische String [] REMENInvalIdateDress (String [] Adressen, String MailFrom) {ArrayList <String> validateadreses = new ArrayList <string> (); ) || (); Normaladdress = Normalizeaddress (Adresse); } Catch (MessagingException E) {Logger.Eror ("E -Mail -Adresse validieren. !Das obige ist der gesamte Inhalt dieses Artikels.