Vorwort
Ich glaube, jeder sollte wissen, dass die allgemeine Open -API, die uns ruft, einen Rückgabewert oder einen Statuscode haben, um uns mitzuteilen, ob die Ausführung erfolgreich ist oder nicht. Javamail liefert jedoch keinen solchen Rückgabewert.
Wenn wir Javamail zum Senden von E -Mails anrufen, können wir daher nur die Catch -Ausnahme verwenden, um festzustellen, ob die E -Mail erfolgreich gesendet wird. Wir glauben, dass die E -Mail erfolgreich gesendet wird, solange keine Ausnahme eintritt. Anschließend analysieren wir, warum Javamail keinen Rückgabewert liefert und ob der erfolgreiche E -Mail -Sendenstatus durch Ausnahmen zuverlässig ist.
Javamail -Sende -Mail -Prinzip
Beim Versenden von E -Mails mit Javamail müssen wir eine Mail -Sitzung angeben. Der Prozess des Erstellens einer Mail -Sitzung ist wie folgt:
Eigenschaften props = neue Eigenschaften (); // IP und Port des Servers, der die Mail props.put sendet ("mail.smtp.host", mail_smtp_host); props.put ("mail.smtp.port", mail_smtp_port); // Ob eine Authentifizierung erforderlich ist, props.put ("mail.smtp.auth", "true"); props.put ("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory"); Sitzung SessionAnalysieren Sie den Code.
Vor dem Erstellen der Sitzung erstellen wir zunächst eine Eigenschaften. Diese Eigenschaften legt die folgenden Parameter fest: mail.smtp.host , mail.smtp.port , mail.smtp.auth und mail.smtp.socketFactory.class . Beim Erstellen einer Sitzung müssen Sie auch den Benutzernamen und das Passwort übergeben, um die E -Mail zu senden.
Der Senden -E -Mail -Code lautet wie folgt:
// 5 Schritte zum Senden von E -Mails mit Javamail // 1. Erstellen von Sitzungssitzung Sitzung Session = Session.getInstance (Prop); // Session -Debug -Modus aktivieren, damit Sie den laufenden Status der von der Programm Session.setDebug (true) gesendeten E -Mail anzeigen können. // 2. Holen Sie sich das Transportobjekt über Session Transport ts = session.getTransport (); // 3. Verwenden Sie den Benutzernamen und das Passwort der E -Mail, um eine Verbindung zum Mailserver herzustellen. Beim Senden von E -Mails muss der Absender den Benutzernamen und das Passwort der E -Mail an den SMTP -Server senden. Der Benutzername und das Passwort können überprüft werden, bevor die E -Mail normal an den Empfänger gesendet werden kann. Ts.Connect ("SMTP.sohu.com", "GaCl", "E -Mail -Passwort"); // 4. Erstellen einer Nachrichtennachricht meldung = createsImplemail (Sitzung); // 5. Senden Sie Mail Ts.SendMessage (Message, message.getallRecipients ()); // die Verbindung ts.close () schließen;Zusammenfassung des Sendens des Sendens von E -Mails hat die folgenden Schritte:
1. Erstellen Sie ein Sitzungsobjekt, das einen Netzwerkverbindungslink zum Mailserver enthält
2. Erstellen Sie ein Nachrichtenobjekt, das den Inhalt der E -Mail darstellt
3. Erstellen Sie ein Transportobjekt
4. Link zum Server
5. Nachricht senden
6. Schließen Sie den Link
Da der Transport nur eine abstrakte Klasse ist, ist die Methode ts.sendMessage tatsächlich die sendMessage -Methode der SMTPTranport -Implementierungsklasse SMTPTransport .
Die sendMessage -Methode von SMTPTransport basiert auf dem SMTP -Protokoll, um E -Mails zu senden.
Wenn JavaMail den SMTP -Dienst verwendet, um E -Mails zu senden, können Sie beim Senden der E -Mail an den SMTP -Server nur den Status erhalten, der an die SMTP -Warteschlange gesendet wurde. Sie können jedoch nicht abrufen, ob der Mailserver ihn erfolgreich senden kann. Das heißt, Sie können nicht garantieren, dass die E -Mail erfolgreich gesendet wird. Dies hängt von der Inhaltsübertragung des SMTP -Protokolls ab.
Wenn das SMTP -Protokoll jedoch fehlschlägt, wird ein Fehler gemeldet. Der von TCP bereitgestellte zuverlässige Datenübertragungsdienst von SMTP überträgt E -Mail -Nachrichten vom Mailserver des Absenders auf den Mailserver des Empfängers.
Wir können also denken, dass, wenn wir Javamail anrufen, um E -Mails zu senden. Wenn das Programm keinen Fehler meldet, bedeutet dies, dass die E -Mail erfolgreich gesendet wird.
SMTP -Arbeitsmechanismus
SMTP verfügt normalerweise über zwei Arbeitsmodi: Senden von SMTP und Empfangen von SMTP.
Die spezifische Arbeitsmethode lautet: Nach dem Empfang der E -Mail -Anfrage des Benutzers bestimmt sie, ob die E -Mail lokale E -Mails ist. Wenn es direkt an die E-Mail des Benutzers gesendet wird, fragen Sie ansonsten den MX-Datensatz des Remote-Mail-Servers vom DNS ab und stellen Sie einen Zwei-Wege-Übertragungskanal mit der Fernbedienung ein. Danach wird der SMTP -Befehl vom sendenden SMTP gesendet, der vom empfangenden SMTP empfangen wird, und die Antwort wird in die entgegengesetzte Richtung übertragen. Sobald der Übertragungskanal festgelegt ist, sendet der SMTP -Absender einen E -Mail -Befehl, um den Absender der Mail anzugeben. Wenn der SMTP -Empfänger die E -Mail erhalten kann, wird die OK -Antwort zurückgegeben. Der SMTP -Absender gibt dann einen RCPT -Befehl aus, um zu bestätigen, ob die E -Mail empfangen wurde. Wenn der SMTP -Empfänger es empfängt, gibt es eine OK -Antwort zurück. Wenn es nicht empfangen werden kann, sendet es eine Ablehnungsantwort (aber die gesamte E -Mail -Operation nicht abbricht), und beide Parteien wiederholen dies oft. Wenn der Empfänger alle E -Mails empfängt, wird eine spezielle Sequenz empfangen. Wenn der Empfänger die E -Mails erfolgreich verarbeitet, wird eine OK -Antwort zurückgegeben.
SMTP -Arbeitsprozess
Simple Mail Transfer Protocol (SMTP) ist ein textbasiertes E-Mail-Übertragungsprotokoll, das im Internet verwendet wird, um E-Mails zwischen Mail-Servern auszutauschen. SMTP ist ein Dienst auf Anwendungsebene, der an verschiedene Netzwerksysteme angepasst werden kann.
Die Befehle und Antworten von SMTP basieren alle auf Text, mit Befehlsverhaltenseinheiten, und die Newline ist Cr/LF. Die Antwortinformationen haben im Allgemeinen nur eine Zeile, beginnend mit einem 3-stelligen Code, und eine sehr kurze Textbeschreibung kann später beigefügt werden.
SMTP muss drei Phasen durchlaufen: eine Verbindung herstellen, E -Mails bereitstellen und eine Verbindung veröffentlichen. Speziell:
(1) eine TCP -Verbindung herstellen.
(2) Der Client sendet einen Helo -Befehl an den Server, um die eigene Identität des Absenders zu identifizieren, und der Client sendet dann einen Mail -Befehl.
(3) Der Server antwortet mit OK und gibt an, dass er empfangen ist.
(4) Der Client sendet den Befehl RCPT.
(5) Die Serverseite gibt an, ob sie bereit ist, E -Mails für den Empfänger zu erhalten.
(6) Ende der Verhandlung, senden Sie E -Mail und verwenden Sie die Befehlsdaten, um den Inhalt der Eingabe zu senden.
(7) Beenden Sie dieses Senden und beenden Sie mit dem Befehl beenden.
Der SMTP Server leitet E -Mails basierend auf Mail Exchange (MX) in DNS. Beim Senden von E -Mails befindet sich der E -Mail -Server gemäß dem Adresssuffix des Empfängers. SMTP vervollständigt die Funktionen des Bearbeitens, Sammelns und Lesens von E -Mails über den User Agent (UA). und überträgt die E -Mails über den Mail Transfer Agent (MTA) an das Ziel.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.