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.
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:
-
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.
- Aprire un browser e andare a https://github.com/javaee/javamail/releases.
- In Download, selezionare javax.mail.jar per scaricare la versione più recente di JavaMail.
- Creare un progetto in Eclipse eseguendo i passi riportati di seguito.
- In Eclipse, aprire il menu File. Selezionare Nuovo, quindi fare clic su Progetto Java.
- Nella finestra di dialogo Crea un progetto Java immettere il nome di un progetto, quindi fare clic su Avanti.
- Nella finestra di dialogo Impostazioni Java, selezionare la scheda Librerie.
- Fare clic su Aggiungi JAR esterni.
- 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.
- Nella finestra di dialogo Impostazioni Java, fare clic su Fine.
- In Eclipse, nella finestra Esplora pacchetti, espandere il progetto.
- Nel progetto fare clic con il pulsante destro del mouse sulla directory src, selezionare Nuovo, quindi fare clic su Classe.
- Nella finestra di dialogo Nuova classe Java, immettere "OCIemail" nel campo Nome, quindi fare clic su Fine.
-
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(); } } }
-
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.
-
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");
- Aprire il menu File e fare clic su Salva.
- Per creare il progetto, aprire il menu Project, quindi selezionare Build Project. Se questa opzione è disabilitata, è possibile che la creazione automatica sia abilitata.
- Per avviare il programma e inviare il messaggio e-mail, aprire il menu Esegui, quindi fare clic su Esegui.
- 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.
- Accedi alla casella di posta del destinatario per verificare la ricezione dell'e-mail.
Ulteriori informazioni
- Per ulteriori informazioni, vedere la documentazione del sito JavaMail.
- Si è verificato un problema noto che può causare un errore. Vedere JavaMail quando in un messaggio di posta elettronica vengono impostati più destinatari e uno o più indirizzi di posta elettronica vengono eliminati.