JavaMail (Jakarta Mail) pour Java : guide complet avec exemples
JavaMail (désormais Jakarta Mail) est la bibliothèque Java standard pour envoyer, recevoir et traiter des emails. Elle offre une API puissante et flexible pour les protocoles SMTP, POP3 et IMAP, permettant aux développeurs d'intégrer des fonctions de messagerie dans leurs applications. Cette bibliothèque fait partie de la plateforme Jakarta EE (anciennement Java EE) et est activement maintenue par la communauté Eclipse Foundation.
Pourquoi utiliser JavaMail ? Dans le développement moderne, presque toute application d'entreprise nécessite l'envoi de notifications, de confirmations d'inscription, de réinitialisations de mot de passe ou de rapports. JavaMail permet de le faire par programmation, sans avoir recours à des services tiers ou à des opérations manuelles. La bibliothèque prend en charge les types MIME, les pièces jointes, les emails HTML, l'envoi multithread et le chiffrement (SSL/TLS).
Les fonctionnalités principales incluent : l'envoi d'emails via un serveur SMTP (Gmail, Outlook, serveur dédié), la lecture d'emails via POP3/IMAP, la gestion des pièces jointes (images, PDF, archives), la prise en charge des messages multipart, la gestion des indicateurs (lu, supprimé) et la configuration complète de la connexion via Properties.
Installation
JavaMail (Jakarta Mail) est distribué via Maven Central. Pour l'utiliser, ajoutez la dépendance dans votre fichier pom.xml (Maven) ou build.gradle (Gradle).
Maven
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Pour Jakarta Mail (nouvelle version, à partir de Jakarta EE 9) :
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
Gradle
implementation 'com.sun.mail:javax.mail:1.6.2'
// Ou pour Jakarta Mail :
implementation 'com.sun.mail:jakarta.mail:2.0.1'
Si vous utilisez Java 9+ et le système de modules, ajoutez dans module-info.java :
requires java.mail;
Démarrage rapide — exemple minimal fonctionnel
Envoi d'un email texte simple via le serveur SMTP de Gmail (nécessite d'activer "Accès aux applications moins sécurisées" ou d'utiliser un mot de passe d'application).
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class QuickStart {
public static void main(String[] args) {
// Configuration SMTP
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");
// Authentification
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("votre-email@gmail.com", "votre-mot-de-passe");
}
});
try {
// Création du message
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("votre-email@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("destinataire@example.com"));
message.setSubject("Email de test depuis Java");
message.setText("Bonjour ! Ceci est un message de test.");
// Envoi
Transport.send(message);
System.out.println("Email envoyé avec succès !");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
Méthodes/fonctions/classes principales
1. Session.getInstance(Properties, Authenti
Aussi dans la bibliothèque
Client Elasticsearch pour Rust : présentation de la bibliothèque elasticsearch-rs
Journalisation en Rust : aperçu des meilleures bibliothèques et outils
Traitement d'images en Java : bibliothèques, outils et exemples de code
Client HTTP pour Swift (iOS/macOS) : top des bibliothèques pour travailler avec le réseau