JavaMail (Jakarta Mail) Java : guide complet avec exemples

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

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

Recommendations