dans le cadre d'un projet sur lequel je suis entrain de travailler, j'aimerai recevoir dans mon application java tous les Email à destination de "kossa.promess@gmail", mais mon code renvoi une erreur du genre "javax.mail.AuthenticationFailedException: failed to connect", j'aimerai savoir d'où provient cette erreure et comment la resoundre.
merci d'avance.
et voici mon code :
private static void receiveMessage() {
// 1 -> La session
//String host="pop.gmail.com";
String host="localhost";
String user="kossa.promess@gmail.com";
String pwd="*******";
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "pop3");
properties.setProperty("mail.pop3.host", host);
properties.setProperty("mail.pop3.user", user);
// properties.setProperty("mail.pop3.auth","true");
Session session = Session.getInstance(properties);
// 2 -> Les dossiers
Store store = null;
Folder defaultFolder = null;
Folder inbox = null;
try {
store = session.getStore(new URLName("pop3://" + host));
store.connect(user, pwd);
defaultFolder = store.getDefaultFolder();
System.out.println("defaultFolder : " + defaultFolder.getName());
for (Folder folder : defaultFolder.list()) {
System.out.println(folder.getName());
}
inbox = defaultFolder.getFolder("INBOX");
printMessages(inbox);
} catch (Exception e) {
e.printStackTrace();
}
finally { // Ne pas oublier de fermer tout ça !
close(inbox);
//inbox.close(true);
close(defaultFolder);
// defaultFolder.close(true);
try {
if (store != null && store.isConnected()) {
store.close();
}
}
catch (MessagingException e) {
e.printStackTrace();
}
}
}
private static void printMessages(Folder folder) {
try {
folder.open(Folder.READ_ONLY);
int count = folder.getMessageCount();
int unread = folder.getUnreadMessageCount();
System.out.println("Il y a " + count + " messages, dont " + unread + " non lus.");
for (int i = 1; i <= count; i++ ) {
Message message = folder.getMessage(i);
System.out.println("Message n° " + i);
System.out.println("Sujet : " + message.getSubject());
System.out.println("Expéditeur : ");
Address[] addresses = message.getFrom();
for (Address address : addresses) {
System.out.println("\t" + address);
}
System.out.println("Destinataires : ");
addresses = message.getRecipients(RecipientType.TO);
if (addresses != null) {
for (Address address : addresses) {
System.out.println("\tTo : " + address);
}
}
addresses = message.getRecipients(RecipientType.CC);
if (addresses != null) {
for (Address address : addresses) {
System.out.println("\tCopie : " + address);
}
}
System.out.println("Content : ");
for (String line : inputStreamToStrings(message.getInputStream())) {
System.out.println(line);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static void close(Folder folder) {
if (folder != null && folder.isOpen()) {
try {
folder.close(false); // false -> On n'efface pas les messages marqués DELETED
}
catch (Exception e) {
e.printStackTrace();
}
}
}
private static Iterable<String> inputStreamToStrings(InputStream inputStream) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public static void main(String[] args) {
// TODO code application logic here
SwingUtilities.invokeLater(new Runnable(){
public void run(){
//FenConnexion cnx=new FenConnexion();
// new FenTicket1();
receiveMessage();
}
});
}
javax.mail.AuthenticationFailedException: failed to connect
Réfléchis deux secondes. Il n'arrive pas à s'authentifier, donc : - Soit ton mot de passe/adresse mail est invalide - Soit tu as fait une mauvaise requête
Et sinon, si ont pourrais avoir le stacktrace complet ont pourra plus t'aider.
j'ai édité le message de l'OP pour remplacer le mot de passe par des astérisques, question de sécurité.
jobard91 a écrit:
Zérotisme a écrit:
Juste comme ca : tu devrais enlever le mot de passe de ton courriel ...
Je pense pas que ce soit sont vrai mot de passe, du moins j espere pour lui...
Sinon il est bon pour le rechanger, et c'est pas forcement utile de mettre ta vraie adresse mail aussi en public (si encore une fois c est la vraie).
Merci , et ( sans aucune mauvaises intentions ) , oui c'etait son vrai mot de passe. C'est pas pour rien je lui ai dit de le changer. Merci d'avoir edité pour lui.
pour ceux qui s'interrogent à propos de mon adresse Email, c'est juste un email que j'avais creer pour les test .
et voici mon stacktrace complet, a propos, mon mot de passe et mon Email sont corrects.
run:
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210) at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:196)
at dialogue.FenTicket1.receiveMessage(FenTicket1.java:92)
at dialogue.FenTicket1.access$000(FenTicket1.java:29)
at dialogue.FenTicket1$1.run(FenTicket1.java:195)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:107)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206)
... 20 more
BUILD SUCCESSFUL (total time: 23 seconds)
A mon avis le nom d'hôte que tu utilise n'est pas le bon, il faut que tu utilise celui du smtp de gmail.
problème pour recevoir un Mail en Java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)