Envoi d'e-mails avec Java

1. Vue d'ensemble

Dans ce tutoriel rapide, nous allons examiner l'envoi d'un e-mail avec et sans pièces jointes - en utilisant la bibliothèque de messagerie Java principale.

2. Configuration du projet et dépendance

Pour cet article, nous allons utiliser un simple projet basé sur Maven avec une dépendance sur la bibliothèque de messagerie Java:

 javax.mail mail 1.5.0-b01 

La dernière version peut être trouvée ici.

3. Envoi d'un texte brut et d'un e-mail HTML

Tout d'abord, nous devons configurer la bibliothèque avec les informations d'identification de notre fournisseur de services de messagerie. Ensuite, nous créerons une session qui sera utilisée dans la construction de notre message à envoyer.

La configuration se fait via un objet Java Properties :

Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.mailtrap.io"); prop.put("mail.smtp.port", "25"); prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

Dans la configuration des propriétés ci-dessus, nous avons configuré l'hôte de messagerie comme Mailtrap et utilisons également le port fourni par le service.

Maintenant, allons plus loin en créant une session avec notre nom d'utilisateur et notre mot de passe:

Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

Le nom d'utilisateur et le mot de passe sont fournis par le fournisseur de services de messagerie avec les paramètres d'hôte et de port.

Maintenant que nous avons un objet Session de messagerie , créons un message Mime pour l'envoi:

Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients( Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Mail Subject"); String msg = "This is my first email using JavaMailer"; MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setContent(msg, "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); message.setContent(multipart); Transport.send(message);

Dans l'extrait de code ci-dessus, nous avons d'abord créé une instance de message avec les propriétés nécessaires - à, de et objet. Suivi par un mimeBodyPart qui a un encodage de texte / html, puisque notre message est stylé en HTML.

La prochaine chose que nous avons faite est de créer une instance de l' objet MimeMultipart que nous pouvons utiliser pour envelopper le mimeBodyPart que nous avons créé.

Enfin, nous définissons l' objet multipart comme contenu de notre message et utilisons le send () de l' objet Transport pour effectuer l'envoi du courrier.

Ainsi, nous pouvons dire que le mimeBodyPart est contenu dans le multipart qui est contenu dans le message. Par conséquent, un multipart peut contenir plus d'un mimeBodyPart .

Ce sera l'objet de la section suivante.

4. Envoi d'un e-mail avec une pièce jointe

Ensuite, pour envoyer une pièce jointe, il suffit de créer un autre MimeBodyPart et d'y attacher le (s) fichier (s):

MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.attachFile(new File("path/to/file"));

Nous pouvons ensuite ajouter la nouvelle partie du corps à l' objet MimeMultipart que nous avons créé précédemment:

multipart.addBodyPart(attachmentBodyPart);

C'est tout ce que nous devons faire.

Encore une fois, nous définissons l' instance multipart comme le contenu de l' objet message et nous utiliserons enfin send () pour envoyer le courrier .

5. Conclusion

En conclusion, nous avons vu comment utiliser la bibliothèque de messagerie Java native pour envoyer des e-mails même avec des pièces jointes.

Comme toujours, le code source complet est disponible sur Github.