Integrazione di JavaMail con il servizio di consegna tramite e-mail

Utilizzare JavaMail per inviare e-mail tramite il servizio di consegna tramite e-mail.

JavaMail offre un framework indipendente dalla piattaforma e dal protocollo per creare applicazioni di posta e messaggistica. Prima di utilizzare JavaMail, è necessario configurare il servizio di consegna tramite e-mail e prendere nota delle informazioni di invio SMTP e delle credenziali SMTP. Questa guida utilizza l'ambiente IDE Eclipse e l'API JavaMail per inviare e-mail tramite il servizio di consegna tramite e-mail.

Importante

Queste istruzioni contengono un codice di esempio che può essere utilizzato come riferimento. Per l'assistenza clienti, è necessario contattare l'assistenza clienti JavaMail. Questi passi sono stati testati su un'istanza di computazione Oracle Linux Server release 7.9 e su Java 8 e 11. Le applicazioni Java (incluso JavaMail) devono essere aggiornate alla versione più recente per garantire che i protocolli, le cifrazioni e le patch di sicurezza più recenti siano conformi ai criteri e alle cifrature di sicurezza supportati da Oracle.

Configurare JavaMail per l'invio di e-mail tramite il servizio di consegna tramite posta elettronica

Per consentire a JavaMail di eseguire il test della configurazione del servizio di consegna tramite e-mail:

  1. Assicurarsi che il servizio di consegna tramite e-mail sia configurato per l'invio di e-mail. Vedere Guida introduttiva.

    Nota

    Le credenziali SMTP sono necessarie per configurare JavaMail in modo che utilizzi il servizio di consegna tramite e-mail. Assicurarsi di prendere nota del nome utente e della password quando si generano le credenziali SMTP.

  2. Aprire un browser e andare a https://github.com/javaee/javamail/releases.
  3. In Download, selezionare javax.mail.jar per scaricare la versione più recente di JavaMail.
  4. Creare un progetto in Eclipse eseguendo i passi riportati di seguito.
    1. In Eclipse, aprire il menu File. Selezionare Nuovo, quindi fare clic su Progetto Java.
    2. Nella finestra di dialogo Crea un progetto Java immettere il nome di un progetto, quindi fare clic su Avanti.
    3. Nella finestra di dialogo Impostazioni Java, selezionare la scheda Librerie.
    4. Fare clic su Aggiungi JAR esterni.
    5. Nella finestra di dialogo Selezione JAR, individuare la cartella in cui è stato scaricato JavaMail. Selezionare il file javax.mail.jar, quindi fare clic su Apri.
    6. Nella finestra di dialogo Impostazioni Java, fare clic su Fine.
  5. In Eclipse, nella finestra Esplora pacchetti, espandere il progetto.
  6. Nel progetto fare clic con il pulsante destro del mouse sulla directory src, selezionare Nuovo, quindi fare clic su Classe.
  7. Nella finestra di dialogo Nuova classe Java, immettere "OCIemail" nel campo Nome, quindi fare clic su Fine.
  8. Immettere il codice seguente in OCIemail.java per inviare un'e-mail di test con JavaMail:

    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. Nel file OCIemail.java sostituire i seguenti valori con valori personalizzati:

    Nota

    Per gli indirizzi e-mail viene fatta distinzione tra maiuscole e minuscole. Assicurarsi che gli indirizzi siano uguali a quelli immessi nei mittenti approvati nella console.

    • FROM: sostituire con l'indirizzo e-mail del mittente. Questo indirizzo e-mail deve essere prima aggiunto all'elenco Mittenti approvati in Consegna tramite e-mail.
    • TO: sostituire con l'indirizzo e-mail del destinatario.
    • Credenziali SMTP: sostituire smtp_username e smtp_password con il nome utente e la password SMTP di Oracle Cloud Infrastructure generati nella console.
    • HOST: sostituire con l'endpoint SMTP del servizio di consegna tramite posta elettronica. Ad esempio, smtp.us-ashburn-1.oraclecloud.com.
  10. Fare riferimento ai requisiti per la configurazione della connessione SMTP con il servizio di consegna tramite e-mail. TLSv1.2 è obbligatorio per il servizio di consegna tramite e-mail. È necessario disabilitare alcune impostazioni predefinite di Javamail. Ad esempio, JavaMail autorizza in un determinato ordine. L'ordine di autorizzazione predefinito è "LOGIN PLAIN DIGEST-MD5 NTLM". Poiché il servizio di consegna tramite e-mail autorizza come "PLAIN", è necessario disabilitare "LOGIN". Ad esempio, il codice seguente viene immesso nel file OCIemail.java per configurare la connessione SMTP:

    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. Aprire il menu File e fare clic su Salva.
  12. Per creare il progetto, aprire il menu Project, quindi selezionare Build Project. Se questa opzione è disabilitata, è possibile che la creazione automatica sia abilitata.
  13. Per avviare il programma e inviare il messaggio e-mail, aprire il menu Esegui, quindi fare clic su Esegui.
  14. Esaminare l'output. Se il messaggio e-mail è stato inviato correttamente, la console visualizza "Invio del messaggio e-mail riuscito!" Altrimenti, viene visualizzato un messaggio di errore.
  15. Accedi alla casella di posta del destinatario per verificare la ricezione dell'e-mail.