IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Problème envoi de mail en Java


Sujet :

API standards et tierces Java

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut Problème envoi de mail en Java
    Bonjour,

    Voila mon problème, j'ai une classe Mail très simple avec une méthode pour envoyer un mail (envoiMail) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import java.util.Properties;
     
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
     
    public class Mail {
        public static void envoiMail(String from, String to, String cc, String sujet, String texte, PieceJointe pj, String signature) {
            // Création de l'objet Properties qui contient tous les paramètres d'initialisation nécessaires.
            Properties props = new Properties();
            props.put("mail.smtp.host", "chrmt-smtp01");
            Session session = Session.getInstance(props, null);
     
            try {
                // Création de l'objet message
                MimeMessage msg = new MimeMessage(session);
                msg.setSubject(sujet);                           // Ajout du sujet
                msg.setFrom(from);                               // Ajout du from ==> Erreur
                msg.setRecipients(Message.RecipientType.TO, to); // Ajout du destinataire
                msg.setRecipients(Message.RecipientType.CC, cc); // Ajout du destinataire en copie
     
                // Ajout du contenu au message
                msg.setContent(createMultipart(texte, pj, signature));
     
                Transport.send(msg);
            } catch (MessagingException mex) {
                System.out.println("send failed, exception: " + mex);
            }
        }
     
        public static MimeMultipart createMultipart(String texte, PieceJointe pj, String signature) throws MessagingException {
            MimeMultipart mp = new MimeMultipart();
     
            // 1ere partie du message : Le texte
            MimeBodyPart mbp1 = new MimeBodyPart();
            mbp1.setText(texte, "ISO-8859-1", "html");
            mp.addBodyPart(mbp1);
     
            // 2ème partie du message : La pièce jointe
            if(pj != null) {
                MimeBodyPart mbp2 = new MimeBodyPart();
                DataSource source = new FileDataSource(pj.getFile());
                mbp2.setDataHandler(new DataHandler(source));
                mbp2.setFileName(pj.getName());
                mp.addBodyPart(mbp2);
            }
     
            // 3ème partie du message : La signature
            MimeBodyPart mbp3 = new MimeBodyPart();
            mbp3.setText(signature, "ISO-8859-1", "html");
            mp.addBodyPart(mbp3);
     
            return mp;
        }
    }
    lorsque je test cette méthode directement dans eclipse, à partir d'une fonction main, cela fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import java.io.File;
    import java.io.IOException;
     
    import package_mail.Mail;
     
    import com.google.common.base.Charsets;
     
    public class testMainClass {    
        public static void main(String[] args) throws IOException {
            String signature = com.google.common.io.Files.toString(new File("code-signature.html"), Charsets.UTF_8);
     
            String texte = "texte de test test";
            String sujet = "ALERTE";
            String to    = "ppp@ppp.fr";
            String cc    = "ppp@ppp.fr";
     
            Mail.envoiMail("aaa@aaa.fr", to, cc, sujet, texte, null, signature);
        }
    }
    maintenant, à partir d'un logiciel, je lui demande d'appeler cette méthode et j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodError: javax.mail.internet.MimeMessage.setFrom(Ljava/lang/String;)
    l'erreur est donc sur la ligne :


    maintenant, si je supprime cette ligne, le mail est bien envoyé mais avec du code html pour la signature :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mbp3.setText(signature, "ISO-8859-1", "html");

    Si quelqu'un à une explication ou une idée pour m'aider.
    Merci.

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    qu'est-ce que cela donne si vous remplacez: par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msg.setFrom( new InternetAddress( from ));
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    oui j'ai trouvé l'erreur merci. Par contre pour quel raison cela fonctionne pas à tous les coups ¨?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    // ------------------------------------------------------------------------------------------------------------------------------ // envoiMail //
        public static void envoiMail(String from, String to, String cc, String sujet, String texte, PieceJointe pj, String signature) {
            // Création de l'objet Properties qui contient tous les paramètres d'initialisation nécessaires.
            Properties props = new Properties();
            props.put("mail.smtp.host", "chrmt-smtp01");
            Session session = Session.getInstance(props, null);
     
            try {
                // Création de l'objet message            
                MimeMessage msg = new MimeMessage(session);
                msg.setSubject(sujet);                           // Ajout du sujet
                msg.setFrom(new InternetAddress(from));          // Ajout du from
                msg.setRecipients(Message.RecipientType.TO, to); // Ajout du destinataire
                msg.setRecipients(Message.RecipientType.CC, cc); // Ajout du destinataire en copie
     
                // Ajout du contenu au message
                msg.setContent(createMultipart(texte, pj, signature));
     
                  Thread.currentThread().setContextClassLoader(javax.mail.Session.class.getClassLoader());
                Transport.send(msg);
            } catch (MessagingException mex) {
                System.out.println("send failed, exception: " + mex);
            }
        }
     
        // ------------------------------------------------------------------------------------------------------------------------ // createMultipart //
        public static Multipart createMultipart(String texte, PieceJointe pj, String signature) throws MessagingException {
            Multipart mp = new MimeMultipart();
            //MimeMultipart mp = new MimeMultipart();
     
            // 1ere partie du message : Le texte
            MimeBodyPart mbp1 = new MimeBodyPart();
            mbp1.setContent(texte, "text/html");
            mp.addBodyPart(mbp1);
     
            // 2ème partie du message : La pièce jointe
            if (pj != null) {
                MimeBodyPart mbp2 = new MimeBodyPart();
                DataSource source = new FileDataSource(pj.getFile());
                mbp2.setDataHandler(new DataHandler(source));
                mbp2.setFileName(pj.getName());
                mp.addBodyPart(mbp2);
            }
     
            // 3ème partie du message : La signature
            MimeBodyPart mbp3 = new MimeBodyPart();
            mbp3.setContent(signature, "text/html");
            mp.addBodyPart(mbp3);
     
            return mp;
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème envoi de mail Outlook en JAVA
    Par lazylemon dans le forum Général Java
    Réponses: 0
    Dernier message: 17/04/2015, 10h02
  2. [JavaMail] envoi de mails en java
    Par franfr57 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/01/2007, 19h33
  3. [Mail] Problème envoi e-mail format HTML
    Par Sayrus dans le forum Langage
    Réponses: 13
    Dernier message: 19/12/2006, 14h57
  4. Problème envoi de mail
    Par Galaad dans le forum ASP
    Réponses: 4
    Dernier message: 14/12/2006, 20h01
  5. Envoi de mail en java
    Par xtil dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 08/09/2005, 00h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo