Envoi d'email en Java : guide complet sur JavaMail et Jakarta 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 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

Recommendations