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- Aussi dans la bibliothèque
Event Bus et le pattern Observer en Go (Golang) : implémentation pub/sub
openai-api-rs Rust : guide complet avec exemples
Validation des données en Kotlin : bibliothèques et approches (Kotlin, Java)
SQLDelight Kotlin : guide complet avec exemples concrets
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et outils