ENVOI DE MAIL AVEC JAVAMAIL

 

 

1°)  Importer la librairie javamail

Disponible dans \\prof\ressources\Java\javamail

image

 

2°)  Dans le projet utiliser les import suivants :

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

 


 

 

3°) Exemple d'envoi de mail :

    //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);

        }

    }