Intégration de JavaMail avec le service de transmission de messages
Utilisez JavaMail pour envoyer des courriels au moyen du service de transmission de messages.
JavaMail fournit un cadre indépendant de la plate-forme et des protocoles pour créer des applications de courriel et de messagerie. Avant d'utiliser JavaMail, vous devez configurer le service de transmission de messages et prendre note des informations d'envoi et d'identification SMTP. Ce guide utilise l'IDE Eclipse et l'API JavaMail pour l'envoi de courriels au moyen du service de transmission de messages.
Ces instructions contiennent un exemple de code pour vous faciliter la tâche et doivent être utilisées comme référence. Pour obtenir de l'assistance, vous devez communiquer avec le soutien à la clientèle de JavaMail. Ces étapes ont été testées sur une instance de calcul Oracle Linux Server version 7.9 et Java 8 et 11. Les applications Java (notamment JavaMail) doivent être mises à niveau vers la dernière version afin d'assurer la conformité des protocoles, des chiffrements et des correctifs de sécurité pris en charge par Oracle.
Configurer JavaMail pour l'envoi de courriels au moyen du service de transmission de messages
Pour activer JavaMail afin de tester la configuration du service de transmission de messages :
-
Assurez-vous que le service de transmission de messages est configuré pour l'envoi de courriels. Voir Introduction.
Note
Les données d'identification SMTP sont requises pour configurer JavaMail afin qu'il puisse utiliser le service de transmission de messages. Veuillez noter le nom d'utilisateur et le mot de passe lorsque vous générez les données d'identification SMTP.
- Ouvrez un navigateur et allez à https://github.com/javaee/javamail/releases.
- Sous Téléchargements, sélectionnez javax.mail.jar pour télécharger la dernière version de JavaMail.
- Créez un projet dans Eclipse en réalisant les opérations suivantes :
- Dans Eclipse, ouvrez le menu File (Fichier). Sélectionnez New (Nouveau), puis cliquez sur Java Project (Projet Java).
- Dans la boîte de dialogue Create a Java Project (Créer un projet Java), entrez un nom de projet, puis cliquez sur Next (Suivant).
- Dans la boîte de dialogue Java Settings (Paramètres Java), sélectionnez l'onglet Java Settings (Bibliothèques).
- Cliquez sur Add External JARs (Ajouter des JAR externes).
- Dans la boîte de dialogue JAR Selection (Sélection JAR), naviguez jusqu'au dossier de téléchargement de JavaMail. Sélectionnez le fichier javax.mail.jar, puis cliquez sur Open (Ouvrir).
- Dans la boîte de dialogue Java Settings (Paramètres Java), cliquez sur Finish (Terminer).
- À partir d'Eclipse, dans la fenêtre Package Explorer (Explorateur de paquetages), développez votre projet.
- Dans votre projet, cliquez avec le bouton droit sur le répertoire src, sélectionnez New (Nouveau), puis cliquez sur Class (Classe).
- Dans la boîte de dialogue New Java Class (Nouvelle classe Java), entrez "OCIemail" dans le champ Name (Nom), puis cliquez sur Finish (Terminer).
-
Entrez le code suivant dans le fichier OCIemail.java pour envoyer un courriel de test avec 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(); } } }
-
Dans le fichier OCIemail.java, remplacez les valeurs suivantes par vos propres valeurs :
Note
Les adresses de courriel sont sensibles à la casse. Assurez-vous que les adresses sont les mêmes que celles entrées pour les expéditeurs approuvés de la console.
- FROM (De) - Remplacez la valeur par l'adresse de courriel de votre expéditeur. Cette adresse de courriel doit d'abord être ajoutée à la liste des expéditeurs approuvés du service de transmission de messages.
- TO (À) - Remplacez la valeur par l'adresse de courriel du destinataire.
- SMTP credentials (Données d'identification SMTP) - Remplacez les valeurs de smtp_username et de smtp_password par votre nom d'utilisateur et votre mot de passe SMTP générés dans la console pour Oracle Cloud Infrastructure.
- HOST - Remplacez la valeur par le point d'extrémité SMTP du service de transmission de messages. Par exemple, smtp.us-ashburn-1.oraclecloud.com.
-
Consultez les exigences de configuration de la connexion SMTP à l'aide du service de transmission de messages. La version TLSv1.2 est requise pour le service de transmission de messages. Certains paramètres par défaut de Javamail doivent être désactivés. Par exemple, JavaMail procède à l'autorisation selon un certain ordre. La commande d'autorisation par défaut est "LOGIN PLAIN DIGEST-MD5 NTLM". Comme le service de transmission de messages l'autorise en tant que "PLAIN", la valeur "LOGIN" doit être désactivée. Par exemple, le code suivant est inséré dans le fichier OCIemail.java afin de configurer la connexion 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");
- Ouvrez le menu File (Fichier) et cliquez sur Save (Enregistrer).
- Pour créer le projet, ouvrez le menu Project (Projet), puis sélectionnez Build Project (Créer un projet). Si cette option est désactivée, il se peut que la création automatique soit activée.
- Pour démarrer le programme et envoyer le courriel, ouvrez le menu Run (Exécuter), puis cliquez sur Run (Exécuter).
- Vérifiez la sortie. Si le courriel a été envoyé, la console affiche un message de réussite. Sinon, un message d'erreur s'affiche.
- Connectez-vous à la boîte de réception du destinataire afin de vérifier la réception du courriel.
Informations supplémentaires
- Pour plus d'informations, voir la documentation relative à JavaMail.
- Il existe un problème connu qui peut causer une erreur. Voir JavaMail si de nombreux destinataires sont définis dans un courriel et qu'une ou plusieurs adresses de courriel sont supprimées.