Envoi de courriels
La plupart des applications web ont besoin de pouvoir envoyer des courriels à leurs utilisateurs. Nous allons voir comment faire dans le cadre d'une application web Java. Les étapes sont les suivantes:
- Intégrer JavaMail.
- Configurer les propriétés pour un serveur d'envoi.
- Créer un message et l'envoyer.
La librairie la plus courante pour envoyer des courriels en Java s'appelle ... JavaMail.
Encore une fois, une simple dépendance dans notre pom.xml va nous permettre d'utiliser la librairie.
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency>
Utiliser Gmail et son serveur d'envoi
Sans se plonger dans les détails, l'envoi d'un courriel nécessite un serveur SMTP qui va s'occuper de transférer le courriel jusqu'au serveur de réception.
La question est donc : où trouver un serveur SMTP accessible?
- Il n'existe pas de serveur SMTP complètement ouvert car il servirait de relai pour tous les spammers de la planète.
- Le fournisseur d'accès Internet fournit normalement un serveur SMTP que vous pouvez utiliser avec parfois un besoin d'autentification par nom d'utilisateur et mot de passe.
- Gmail et son service de messagerie en ligne vous permet d'accéder à son serveur de messagerie si vous avez un compte Gmail.
Nous utiliserons cette possibilité (ATTENTION : vous devez lire les conditions d'utilisation de Gmail pour vous assurer que vous ne violez aucune règle énoncée par Google) juste pour tester un envoi de courriel pour votre application.
Il est fortement recommandé de créer un compte Google spécialement pour votre application car vous devrez écrire votre mot de passe dans le code.
// A remplacer par votre login Gmail pour l'envoi de courriel
final String gmailLogin = "moncompte@gmail.com";
// A remplacer par le mot de passe du compte Gmail
final String gmailPass = "monmotdepasse";
// A remplacer par votre adresse courriel
final String destination = "destination@domaine.com";
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 javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(gmailLogin,gmailPass);
}
});
Dans le détail:
- Les 3 variables initiales sont à remplacer par les valeurs que vous souhaitez utiliser. Gmail requiert un compte pour utiliser son serveur, et il faudra une adresse de destination pour votre courriel.
- La configuration du serveur pour JavaMail se fait à travers l'objet Properties.
- Ensuite, nous créons une Session qui est l'objet nécessaire pour pouvoir créer nos messages plus tard.
Créer un message et l'envoyer
Reste maintenant à créer et envoyer un message. La création du message se fait via un MimeMessage. Une fois le message créé, nous allons utiliser la classe Transport de JavaMail pour envoyer le message.
Address sender = new InternetAddress(gmailLogin);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(sender);
msg.setRecipients(Message.RecipientType.TO,destination);
msg.setSubject("Test de courriel de mon application "+id);
msg.setSentDate(new Date());
msg.setText("Bonjour!\nTest de courriel avec une URL et un paramètre \nhttp://localhost:7070/voirCommande?id="+id);
Transport.send(msg);
ATTENTION: il y a de fortes chances que le courriel envoyé soit classé dans les spams de votre boîte de réception. Vérifier le dossier spam de votre courriel avant de jeter votre code.
Fichiers du projet
Vous trouverez le projet intégrant les éléments permettant d'envoyer des courriels ici. La classe la plus importante de ce projet est Courriel.java qui contient le code ci-dessus. L'application part sur le port 7654 à l'URL :
http://localhost:7654/
Aucun commentaire:
Enregistrer un commentaire