1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
package test;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class testMail {
final static String HOST = "smtp.live.com"; //pour hotmail
final static String EXPEDITEUR = "mon adresse mail";
final static String PASSWORD = "mon mot de passe";
final static String DESTINATAIRE = "adresse mail du destinataire";
public static void main(String[] args) {
// test
String subject = "Sujet";
String text = "Ceci est mon texte";
String destinataire = DESTINATAIRE;
String copyDest = "adresse mail en copie";
sendMessage(subject, text, destinataire, copyDest);
}
/*
* L'envoi du message se fait en trois étapes :
*
* création d'une Session ; création d'un objet Message, auquel nous
* ajoutons les destinataires ; envoi du message, grâce à un objet
* Transport. Voyons ces étapes une à une :
*/
public static void sendMessage(String subject, String text, String destinataire, String copyDest) {
// 1 -> Création de la session
Properties properties = new Properties();
properties.setProperty("mail.transport.protocol", "smtp");
properties.setProperty("mail.smtp.host", HOST);
properties.setProperty("mail.smtp.user", EXPEDITEUR);
properties.setProperty("mail.from", DESTINATAIRE);
properties.setProperty("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(properties);
/*
* Pour construire une Session, nous avons besoin de quelques
* propriétés, comme le protocole (SMTP dans notre cas), le serveur,
* ainsi que des informations d'identification, mais sans le mot de
* passe. Ce dernier nous sera demandé lors de la connexion par l'objet
* Transport. Pour connaître l'ensemble des propriétés, je vous renvoie
* à la documentation officielle de Javamail.
*
* Maintenant que nous avons notre session, créons notre message :
*/
// 2 -> Création du message
MimeMessage message = new MimeMessage(session);
try {
message.setText(text);
message.setSubject(subject);
message.addRecipients(Message.RecipientType.TO, destinataire);
message.addRecipients(Message.RecipientType.CC, copyDest);
} catch (MessagingException e) {
e.printStackTrace();
}
// Rien de compliqué : on instancie notre message en lui passant en
// paramètre la session, puis on ajoute le texte, le sujet et les
// destinataires. Reste à l'envoyer :
// 3 -> Envoi du message
try {
Transport transport = session.getTransport("smtp");
transport.connect(EXPEDITEUR, PASSWORD);
transport.sendMessage(message,
new Address[] { new InternetAddress(destinataire), new InternetAddress(copyDest) });
if (transport != null) {
transport.close();
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
// C'est tout aussi simple : notre session nous donne un objet Transport,
// qui nous permet de nous connecter au serveur SMTP et d'envoyer le message
// à nos destinataires. Attention, pour créer l'objet Transport à partir de
// la session, pensez à mettre le protocole en minuscules ! Et bien entendu,
// on ferme notre connexion.
// Rien de bien compliqué, mais nous avons cependant affaire à quelques
// subtilités. En premier lieu, il est possible, mais pas toujours,
// d'envoyer des messages sans indiquer les propriétés. Tout dépend du
// serveur SMTP et de sa configuration. J'ai réussi avec l'un, pas avec
// l'autre (smtp.laposte.net). Le mieux est donc de les mettre
// systématiquement. Ensuite, la propriété mail.host doit impérativement
// correspondre au nom du serveur SMTP. En général, c'est celui utilisé pour
// l'envoi, mais pas toujours. Si on se trompe, tout ce qu'on obtient est
// une exception : |
Partager