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.

Wichtig

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:

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

  2. Öffnen Sie einen Browser, und gehen Sie zu https://github.com/javaee/javamail/releases.
  3. Wählen Sie unter Downloads javax.mail.jar aus, um die neueste Version von JavaMail herunterzuladen.
  4. Erstellen Sie ein Projekt in Eclipse, indem Sie die folgenden Schritte ausführen:
    1. Öffnen Sie in Eclipse das Menü Datei. Wählen Sie Neu aus, und klicken Sie auf Java-Projekt.
    2. Geben Sie im Dialogfeld "Java-Projekt erstellen" einen Projektnamen ein, und klicken Sie auf Weiter.
    3. Wählen Sie im Dialogfeld "Java-Einstellungen" die Registerkarte Librarys aus.
    4. Klicken Sie auf Externe JARs hinzufügen.
    5. 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.
    6. Klicken Sie im Dialogfeld "Java-Einstellungen" auf Fertigstellen.
  5. Blenden Sie in Eclipse im Package Explorer-Fenster das Projekt ein.
  6. Klicken Sie unter Ihrem Projekt mit der rechten Maustaste auf das Quellverzeichnis, wählen Sie Neu aus, und klicken Sie dann auf Klasse.
  7. Geben Sie im Dialogfeld "Neue Java-Klasse" im Feld Name den Wert "OCIemail" ein, und klicken Sie auf Fertigstellen.
  8. 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();
     
            }
     
        }
     
    }
  9. 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.
  10. 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"); 
  11. Öffnen Sie das Menü Datei, und klicken Sie auf Speichern.
  12. 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.
  13. Um das Programm zu starten und die E-Mail zu senden, öffnen Sie das Menü Ausführen, und klicken Sie auf Ausführen.
  14. 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.
  15. Melden Sie sich beim Posteingang des Empfängers an, um den Eingang der E-Mail zu prüfen.