Ce tutoriel explique comment envoyer un mail avec java. Pour cela, vous devez disposer d'un serveur SMTP.
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.
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();
}
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);