Envoi d'un mail avec javamail

Envoi d'un mail avec JavaMail

Ce tutoriel explique comment envoyer un mail avec java. Pour cela, vous devez disposer d'un serveur SMTP.

Installer l'API

Téléchargez l'api de javamail sur le site d'oracle : http://www.oracle.com/technetwork/java/javamail/index.html

Il faudra ensuite placer cette api dans le classpath du projet : je ne détaille pas plus cette opération qui peut être réalisée de pleureuses manières différentes.

Créer le programme

Voici un programme qui permet d'envoyer un mail simple :

/* L'adresse IP de votre serveur SMTP */
String smtpServer = "10.48.000.00";
/* L'adresse de l'expéditeur */
String from = "monAdresse@monDomaine.fr";
/* L'adresse du destinataire */
String to = "adresseDestinataire@domaine.fr";
/* L'objet du message */
String objet = "Objet";
/* Le corps du mail */
String texte = "Texte du mail";
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpServer);
/* Session encapsule pour un client donné sa connexion avec le serveur de mails.*/
Session session = Session.getDefaultInstance(props, null);
/* Création du message*/
Message msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
msg.setSubject(objet);
msg.setText(texte);
msg.setHeader("X-Mailer", "LOTONtechEmail");
Transport.send(msg);
}
catch (AddressException e) {
e.printStackTrace();
}
catch (MessagingException e) {
e.printStackTrace();
}

Les pièces jointes

Pour envoyer une pièce jointe, il faut utilise un MimeMultipart :

  Multipart multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Le corps du message");
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource("D:\\dossier\pieceJointe.txt");
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName("D:\\dossier\pieceJointe.txt");
multipart.addBodyPart(messageBodyPart);

On créé ensuite le message de la même manière à une exception prêt :
Nous n'utilisons pas la méthode setText() pour écrire le corps du message mais la méthode suivante :

msg.setContent(multipart);
Ce document intitulé « Envoi d'un mail avec javamail » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.