…
//Envoi des mails avec reçu personnalisé en pièce jointe
public
void PreparationMail()
{
//Utilisation
String pseudo="arsene.dupont@orange.fr";
String motDePasse="monMotDePasseOrange";
String expediteur="nom.prenom@gmail.com";
// Dans cet exemple on suppose que les destinataires sont dans la
collection lesMembres
// Et les pièces jointes dans la collection
lesPiecesJointes
String destinataires[] = new String[lesMembres.size()];
for(int i=0; i < lesMembres.size(); i++)
{
destinataires[i] = lesMembres.get(i).getEmail(); // Il existe une classe Membre avec entre autres un
attribut email et l'accesseur correspondant
}
String maPieceJointe = "monDocument.pdf"; // Dans cet exemple je consodère que tout le monde
reçoit la même pièce jointe
String sujet="Sujet de l'envoi";
String message="Bonjour. Blablabla…";
try
{
envoyerMail(pseudo, motDePasse, expediteur, destinataires,
sujet, message, maPieceJointe);
System.out.println("Mail envoyé !");
}
catch(MessagingException ex)
{
System.out.println("Erreur envoi mail : " +
ex.getMessage());
ex.printStackTrace();
}
}
//Méthode permettant la création et l'envoi du mail
private
void envoyerMail(String pseudo, String motDePasse, String
expediteur, String destinataires[], String sujet, String message,
String pieceJointe) throws MessagingException
{
//Configurer le serveur
smtp
Properties props=new Properties();
// Via gmail
//props.put("mail.smtp.host", "smtp.gmail.com");
//smtp.mail.yahoo.fr pour Yahoo par exemple
//props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
//smtp.mail.yahoo.fr pour Yahoo par exemple
// Via Orange
props.put("mail.smtp.host", "smtp.orange.fr"); //smtp.mail.yahoo.fr
pour Yahoo par exemple
props.put("mail.smtp.ssl.trust", "smtp.orange.fr");
//smtp.mail.yahoo.fr pour Yahoo par exemple
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
// Pour autoriser une connexion "non
sécurisée" : pour gmail notamment
props.setProperty("mail.smtp.starttls.enable", "true");
//Création d'une session et envoi du
pseudo et mot de passe. A prendre tel quel, seuls le pseudo et
motDePasse sont modifiables
Session session=Session.getInstance(props, new
Authenticator()
{
@Override
protected PasswordAuthentication
getPasswordAuthentication()
{
return new PasswordAuthentication(pseudo, motDePasse);
}
});
//Créer message
MimeMessage msg=new MimeMessage(session);
//Configurer
expéditeur
InternetAddress adrExpediteur=new
InternetAddress(expediteur);
msg.setFrom(adrExpediteur);
String fichier = "";
for (int j = 0; j < destinataires.length; j++)
{
//Configurer
destinataire
InternetAddress[] adrDestinataires=new InternetAddress[1]; // 1 car
on considère que le destinataire n'a qu'une seule adresse
mail
adrDestinataires[0] = new
InternetAddress(destinataires[j]);
//Le deuxième paramètre est un tableau
d'InternetAddress, même si un seul élément
msg.setRecipients(Message.RecipientType.TO,
adrDestinataires);
// Préparation à l'ajout du message et
de la pièce jointe
Multipart multipart = new MimeMultipart();
// creation partie principale du
message
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(message);
multipart.addBodyPart(messageBodyPart);
// création et ajout de la piece
jointe
messageBodyPart = new MimeBodyPart();
System.out.println("Fichier envoyé : " + pieceJointe);
DataSource source = new FileDataSource(pieceJointe);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(source.getName());
multipart.addBodyPart(messageBodyPart);
// Fin piece jointe
//Définition du sujet, du contenu
principal du message(texte et pièce jointe)
msg.setSubject(sujet);
msg.setContent(multipart);
//les deux lignes suivantes sont
optionnelles
msg.setHeader("Exemple mail en java", "JAVAMAIL");
msg.setSentDate(new Date());
//Envoi du mail
Transport.send(msg);
}
}
…