Bonjour,
Voilà j'ai rencontré des problèmes avec mon code , les lignes suivantes sont pour envoyer un mail en gmail avec langage java,
j'ai suivi un tutoriel mais je ne sais pas pourquoi j'ai ce genre des erreurs:
Mon code:

import javax.mail.;
import javax.mail.internet.
;
import javax.mail.internet.MimeMessage;

import java.util.*;

public class EmailGmail {
private void envoyerGMail(String pseudo, String motDePasse, String expediteur, String destinataires[], String sujet, String message) throws MessagingException
{
//Configurer serveur smtp
Properties props=new Properties();
props.put("mail.smtp.host", "smtp.gmail.com"); //smtp.mail.yahoo.fr pour Yahoo
props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); //smtp.mail.yahoo.fr pour Yahoo
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");

    //Envoyer pseudo et mot de passe
    Session session=Session.getInstance(props, new Authenticator()
    {
        @Override
        protected PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(pseudo, motDePasse);
        }
    });
  //Créer message
    Message msg=new MimeMessage(session);

    //Configurer expéditeur
    InternetAddress adrExpediteur=new InternetAddress(expediteur);
    msg.setFrom(adrExpediteur);

    //Configurer destinataires
    InternetAddress[] adrDestinataires=new InternetAddress[destinataires.length]; 
    for (int i=0;i;<destinataires.length;i++)
    {
        adrDestinataires[i]=new InternetAddress(destinataires[i]);
    }
    msg.setRecipients(Message.RecipientType.TO, adrDestinataires);

    //Sujet et corps du message
    msg.setSubject(sujet);
    msg.setContent(message, "text/plain");
    Transport.send(msg);
}
//Utilisation
String pseudo="monPseudo";
String motDePasse="monMotDePasse";
String expediteur="moPseudo@gmail.com";
String destinataires[]={"moPseudo@xxxx.xxx"};  
String sujet="Pas de sujet";
String message="Salut ! Mail envoyé par Java !";
try
{
    envoyerGMail(pseudo, motDePasse, expediteur, destinataires, sujet, message);
    affiche("Mail envoyé !");
}
catch(MessagingException ex)
{
    affiche(String.valueOf(ex));
}

}
Les erreurs:
Description Resource Path Location Type
The method affiche(String) is undefined for the type EmailGmail EmailGmail.java /EmailGmail/src/EmailGmail line 59 Java Problem
The method affiche(String) is undefined for the type EmailGmail EmailGmail.java /EmailGmail/src/EmailGmail line 63 Java Problem
The method setContent(String, String) is undefined for the type Message EmailGmail.java /EmailGmail/src/EmailGmail line 46 Java Problem
The method setFrom(InternetAddress) is undefined for the type Message EmailGmail.java /EmailGmail/src/EmailGmail line 34 Java Problem
The method setSubject(String) is undefined for the type Message EmailGmail.java /EmailGmail/src/EmailGmail line 45 Java Problem
Description Resource Path Location Type
No exception of type MessagingException can be thrown; an exception type must be a subclass of Throwable EmailGmail.java /EmailGmail/src/EmailGmail line 10 Java Problem
RecipientType cannot be resolved or is not a field EmailGmail.java /EmailGmail/src/EmailGmail line 42 Java Problem

Veuillez m'aider s'ils vous plaît.
Merci d'avance.

5 réponses


Bonjour,
le nom complet de la classe MessagingException est javax.mail.MessagingException
de ce fait, pour l'importer tu peux faire

import javax.mail.MessagingException;

sinon tu importes toutes les classes de javax.mail

import javax.mail.*;

c'est sans doute ce qu'est censé faire ta première ligne mais il manque l'étoile !!!

Pour afficher le message d'une Exception il faut utiliser getMessage()

catch(MessagingException ex)
{
   // System.out.println(ex.getMessage());
    affiche( ex.getMessage() );
}
Sanae
Auteur

Bonjour,
Merci pour ta réponse.
j'ai ajouté ce tu m'a dit , cependant j'ai les mêmes erreurs.

Tu as des erreurs car tu utilises la classe Message au lieu de MimeMessage
remplaces

//Créer message
    Message msg=new MimeMessage(session);

par

//Créer message
    MimeMessage msg=new MimeMessage(session);

la classe MimeMessage hérite de Message mais possède des méthodes en plus

Chose importante, l'API javaMail est dans un package à part, il faut le télécharge ici

Voici les imports qui fonctionnent chez moi

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; 
import javax.mail.Session;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Transport;

import javax.mail.internet.InternetAddress;
import java.util.*;

et pour les jar nécessaires
mailapi.jar et smtp.jar suffisent normalement