Envoi d'email en Java avec Jakarta Mail (JavaMail)
L'envoi d'emails est l'une des tâches les plus courantes dans les applications d'entreprise en Java : inscription des utilisateurs, notifications, réinitialisation de mots de passe et campagnes marketing. Pendant longtemps, la bibliothèque JavaMail était la norme de facto, mais après le passage de Java EE à la Eclipse Foundation, elle a été renommée Jakarta Mail. Dans ce guide, nous allons voir en détail comment configurer et utiliser Jakarta Mail pour envoyer des emails en Java.
Qu'est-ce que Jakarta Mail ?
Jakarta Mail (anciennement JavaMail) est une API pour envoyer, recevoir et traiter des emails dans les applications Java. La bibliothèque prend en charge les protocoles SMTP, POP3 et IMAP, ainsi que la norme MIME, ce qui permet d'envoyer aussi bien des emails texte simples que des messages avec pièces jointes, du formatage HTML et des images.
Installation et ajout des dépendances
Pour travailler avec Jakarta Mail, vous devez ajouter une dépendance à votre projet. Si vous utilisez Maven, ajoutez dans pom.xml :
<dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>2.0.1</version></dependency>Pour Gradle :
implementation 'com.sun.mail:jakarta.mail:2.0.1'Important : Si vous utilisez Java 8 ou une version antérieure, assurez-vous que la version de Jakarta Mail est compatible — pour Java 8, la version 1.6.x convient (par exemple, javax.mail:javax.mail-api:1.6.2).
Envoi basique d'email en Java
Voyons l'exemple le plus simple — l'envoi d'un email texte via le serveur SMTP de Gmail. Pour cela, vous aurez besoin de :
- Un compte Gmail (ou d'un autre service de messagerie)
- Un mot de passe d'application (si l'authentification à deux facteurs est activée)
- L'autorisation d'accès aux applications moins sécurisées (si nécessaire)
Code d'envoi :
import jakarta.mail.*;import jakarta.mail.internet.*;import java.util.Properties;
public class EmailSender { public static void main(String[] args) { // 1. Configuration des propriétés de connexion Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true");
// 2. Authentification Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-app-password"); } });
try { // 3. Création du message Message message = new MimeMessage(session); message.setFrom(new InternetAddress("from-email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("Email de test depuis Java"); message.setText("Bonjour ! Cet email a été envoyé avec Jakarta Mail.");
// 4. Envoi Transport.send(message); System.out.println("Email envoyé avec succès !"); } catch (MessagingException e) { e.printStackTrace(); } }}Envoi d'emails HTML et avec pièces jointes
Il est souvent nécessaire d'envoyer un email avec du formatage (HTML) ou de joindre un fichier. Pour cela, on utilise MimeMultipart et MimeBodyPart.
Email HTML
MimeBodyPart htmlPart = new MimeBodyPart();htmlPart.setContent("<h1>Bonjour !</h1><p>Ceci est un email HTML depuis Java.</p>", "text/html; charset=utf-8");
Multipart mu Aussi dans la bibliothèque
Travailler avec les dates en JavaScript (Node.js) : bibliothèques populaires
Surveillance des applications Rust : Aperçu des outils et bibliothèques
Sérialisation d'objets en C++ : bibliothèques et méthodes