Envoi d'Email en Java : bibliothèques JavaMail et Simple Java Mail

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Envoi d'Email en Java : aperçu des bibliothèques et exemples de code



L'envoi de courriers électroniques est l'une des tâches de base dans les applications d'entreprise et web. Dans l'écosystème Java, il existe plusieurs outils éprouvés pour travailler avec le protocole SMTP. Dans cet article, nous examinerons deux bibliothèques principales : la norme JavaMail (Jakarta Mail) et la plus moderne Simple Java Mail. Vous apprendrez à configurer une connexion à un serveur SMTP, envoyer un simple message, ajouter du balisage HTML et des pièces jointes.



1. Jakarta Mail (anciennement JavaMail API)



Jakarta Mail (ancien nom — JavaMail API) est la spécification officielle pour travailler avec la messagerie électronique en Java. Elle fait partie de Jakarta EE et peut être utilisée dans tout projet Java. Pour se connecter à un serveur SMTP, il est nécessaire d'ajouter des dépendances dans pom.xml (Maven) ou build.gradle (Gradle).



Ajout de la dépendance (Maven)

<dependency>    <groupId>com.sun.mail</groupId>    <artifactId>javax.mail</artifactId>    <version>1.6.2</version></dependency>


Exemple : envoi d'un message texte simple

import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;

public class EmailSender { public static void main(String[] args) { final String username = "your-email@gmail.com"; final String password = "your-app-password";

Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Message de test depuis Java"); message.setText("Bonjour ! Ce message a été envoyé avec l'API JavaMail.");

Transport.send(message); System.out.println("Message envoyé avec succès !"); } catch (MessagingException e) { e.printStackTrace(); } }}


  • Properties — paramètres SMTP : hôte, port, authentification, TLS.
  • Session — session avec le serveur, créée avec un authentificateur.
  • MimeMessage — objet du message, dans lequel sont définis l'expéditeur, le destinataire, le sujet et le corps.
  • Transport.send() — envoi du message via SMTP.


Envoi d'un message HTML avec pièce jointe

import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;

public class HtmlEmailWithAttachment { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } });

MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-

Recommendations