JavaMail mit Email Delivery integrieren
Verwenden Sie JavaMail, um E-Mails über den Email Delivery-Service zu senden.
JavaMail stellt ein plattform- und protokollunabhängiges Framework für die Erstellung von E-Mail- und Messaging-Anwendungen bereit. Bevor Sie JavaMail verwenden können, müssen Sie Email Delivery konfigurieren und die SMTP-Versandinformationen sowie die SMTP-Zugangsdaten notieren. In dieser Dokumentation werden Eclipse IDE und die JavaMail-API verwendet, um E-Mails über Email Delivery zu senden.
Diese Anweisungen enthalten praktischen Beispielcode und sollten als Referenz verwendet werden. Um Clientsupport zu erhalten, müssen Sie sich an den JavaMail-Kundensupport wenden. Diese Schritte wurden auf einer Oracle Linux Server Release 7.9 Compute-Instanz und Java 8 und 11 getestet. Java-Anwendungen (einschließlich JavaMail) müssen auf die neueste Version aktualisiert werden, um sicherzustellen, dass die neuesten Protokolle, Ciphers und Sicherheitspatches die von Oracle unterstützten Sicherheits-Policys und Ciphers einhalten.
JavaMail so konfigurieren, dass E-Mails über Email Delivery gesendet werden
So ermöglichen Sie JavaMail das Testen der Konfiguration von Email Delivery:
-
Stellen Sie sicher, dass Email Delivery zum Senden von E-Mails konfiguriert ist. Siehe Erste Schritte.
Hinweis
Die SMTP-Zugangsdaten sind erforderlich, um JavaMail zur Verwendung von Email Delivery zu konfigurieren. Notieren Sie den Benutzernamen und das Kennwort, wenn Sie die SMTP-Zugangsdaten generieren.
- Öffnen Sie einen Browser, und gehen Sie zu https://github.com/javaee/javamail/releases.
- Wählen Sie unter Downloads javax.mail.jar aus, um die neueste Version von JavaMail herunterzuladen.
- Erstellen Sie ein Projekt in Eclipse, indem Sie die folgenden Schritte ausführen:
- Öffnen Sie in Eclipse das Menü Datei. Wählen Sie Neu aus, und klicken Sie auf Java-Projekt.
- Geben Sie im Dialogfeld "Java-Projekt erstellen" einen Projektnamen ein, und klicken Sie auf Weiter.
- Wählen Sie im Dialogfeld "Java-Einstellungen" die Registerkarte Librarys aus.
- Klicken Sie auf Externe JARs hinzufügen.
- Navigieren Sie im Dialogfeld "JAR-Auswahl" zu dem Ordner, in den Sie JavaMail heruntergeladen haben. Wählen Sie die Datei javax.mail.jar aus, und klicken Sie auf Öffnen.
- Klicken Sie im Dialogfeld "Java-Einstellungen" auf Fertigstellen.
- Blenden Sie in Eclipse im Package Explorer-Fenster das Projekt ein.
- Klicken Sie unter Ihrem Projekt mit der rechten Maustaste auf das Quellverzeichnis, wählen Sie Neu aus, und klicken Sie dann auf Klasse.
- Geben Sie im Dialogfeld "Neue Java-Klasse" im Feld Name den Wert "OCIemail" ein, und klicken Sie auf Fertigstellen.
-
Geben Sie den folgenden Code in OCIemail.java ein, um eine Test-E-Mail mit JavaMail zu senden:
import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class OCIemail { // Replace FROM with your "From" address. // This address must be added to Approved Senders in the console. static final String FROM = "<sender email address>"; static final String FROMNAME = "<sender name>"; // Replace TO with a recipient address. static final String TO = "<recipient email address>"; // Replace smtp_username with your Oracle Cloud Infrastructure SMTP username generated in console. static final String SMTP_USERNAME = "<username OCID from SMTP credentials>"; // Replace smtp_password with your Oracle Cloud Infrastructure SMTP password generated in console. static final String SMTP_PASSWORD = "<SMTP password>"; // Oracle Cloud Infrastructure Email Delivery hostname. static final String HOST = "<SMTP endpoint>"; // The port you will connect to on the SMTP endpoint. Port 25 or 587 is allowed. static final int PORT = 587; static final String SUBJECT = "<subject of your email>"; static final String BODY = String.join( System.getProperty("line.separator"), "<h1>OCI Email Delivery test</h1>", "<p>This email was sent with OCI Email Delivery using the ", "<a href='Javamail'>https://github.com/javaee/javamail'>Javamail Package</a>", " for <a href='Javahttps://www.java.com'>Java</a>." ); public static void main(String[] args) throws Exception { // Create a Properties object to contain connection configuration information. Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.port", PORT); //props.put("mail.smtp.ssl.enable", "true"); //the default value is false if not set props.put("mail.smtp.auth", "true"); props.put("mail.smtp.auth.login.disable", "true"); //the default authorization order is "LOGIN PLAIN DIGEST-MD5 NTLM". 'LOGIN' must be disabled since Email Delivery authorizes as 'PLAIN' props.put("mail.smtp.starttls.enable", "true"); //TLSv1.2 is required props.put("mail.smtp.starttls.required", "true"); //Oracle Cloud Infrastructure required // Create a Session object to represent a mail session with the specified properties. Session session = Session.getDefaultInstance(props); // Create a message with the specified information. MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(FROM,FROMNAME)); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO)); msg.setSubject(SUBJECT); msg.setContent(BODY,"text/html"); // Create a transport. Transport transport = session.getTransport(); // Send the message. try { System.out.println("Sending Email now...standby..."); // Connect to OCI Email Delivery using the SMTP credentials specified. transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD); // Send email. transport.sendMessage(msg, msg.getAllRecipients()); System.out.println("Email sent!"); } catch (Exception ex) { System.out.println("The email was not sent."); System.out.println("Error message: " + ex.getMessage()); } finally { // Close & terminate the connection. transport.close(); } } }
-
Ersetzen Sie in der Datei OCIemail.java Folgendes durch Ihre eigenen Werte:
Hinweis
Bei E-Mail-Adressen muss die Groß-/Kleinschreibung beachtet werden. Stellen Sie sicher, dass die Adressen mit den Adressen identisch sind, die Sie in der Konsole in "Genehmigte Absender" eingegeben haben.
- VON - Durch Ihre Absender-E-Mail-Adresse ersetzen. Diese E-Mail-Adresse muss zuerst der Liste "Genehmigte Absender" in Email Delivery hinzugefügt werden.
- AN - Durch die Empfänger-E-Mail-Adresse ersetzen.
- SMTP-Zugangsdaten - Ersetzen Sie "smtp_username" und "smtp_password" durch den SMTP-Benutzernamen und das Kennwort für Oracle Cloud Infrastructure, die in der Konsole generiert wurden.
- HOST - Durch den SMTP-Endpunkt für Email Delivery ersetzen. Beispiel: smtp.us-ashburn-1.oraclecloud.com.
-
Beachten Sie die Anforderungen zum Konfiguration von SMTP-Verbindungen mit Email Delivery. Für Email Delivery ist TLSv1.2 erforderlich. Einige Standardeinstellungen von JavaMail müssen deaktiviert werden. Beispiel: JavaMail autorisiert in einer bestimmten Reihenfolge. Die Standardautorisierungsreihenfolge lautet "LOGIN PLAIN DIGEST-MD5NTLM". Da Email Delivery als "PLAIN" autorisiert, muss "LOGIN" deaktiviert werden. Beispiel: Der folgende Code wird in die Datei OCIemail.java eingegeben, um die SMTP-Verbindung zu konfigurieren:
props.put("mail.smtp.auth", "true"); props.put("mail.smtp.auth.login.disable", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true");
- Öffnen Sie das Menü Datei, und klicken Sie auf Speichern.
- Um das Projekt zu erstellen, öffnen Sie das Menü Projekt, und wählen Sie Projekt erstellen aus. Wenn diese Option deaktiviert ist, ist das automatische Erstellen möglicherweise aktiviert.
- Um das Programm zu starten und die E-Mail zu senden, öffnen Sie das Menü Ausführen, und klicken Sie auf Ausführen.
- Prüfen Sie die Ausgabe. Wenn die E-Mail erfolgreich gesendet wurde, wird in der Konsole "E-Mail erfolgreich gesendet!" angezeigt. Andernfalls wird eine Fehlermeldung angezeigt.
- Melden Sie sich beim Posteingang des Empfängers an, um den Eingang der E-Mail zu prüfen.
Weitere Informationen
- Weitere Informationen finden Sie in der Dokumentation zu JavaMail.
- Es liegt ein bekanntes Problem vor, das zu einem Fehler führen kann. Siehe JavaMail-Fehler treten auf, wenn viele Empfänger in einer E-Mail festgelegt sind und mindestens eine der E-Mail-Adressen unterdrückt wird.