[Javax.mail][pop3]connexion via store.connect(user, password) échouée
Bonjour a tous!
J'ai un problème lors de la lecture de mail d'un compte laposte.net via la bibliothèque javax.mail.
Actuellement j'ai tenter de suivre ce tuto : http://atatorus.developpez.com/tutor...avec-javamail/
ce qui a abouti sur ce code :
Code:
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| package testMail;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
public class Main {
private static final String POP_SERVER3 = "pop.laposte.net";
private static final String POP_PASSWORD3 = "***";
private static final String POP_ACCOUNT3 = "meteo-dijon@laposte.net";
public static void main(String [] args) {
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "pop3");
properties.setProperty("mail.pop3.host", POP_SERVER3);
properties.setProperty("mail.pop3.user", POP_ACCOUNT3);
Session session = Session.getInstance(properties);
session.setDebug(true);
Store store = null;
Folder defaultFolder = null;
Folder inbox = null;
try {
store = session.getStore(new URLName("pop3://" + POP_SERVER3));
System.out.println(store);
store.connect(POP_ACCOUNT3, POP_PASSWORD3);
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) {
System.out.println(e);
System.out.println("///////////////////////////////////////////////////");
e.printStackTrace();
System.out.println("///////////////////////////////////////////////////");
System.out.println(e.getCause());
System.out.println("***************************************************");
} finally { // Ne pas oublier de fermer tout ça*!
close(inbox);
close(defaultFolder);
try {
if (store != null && store.isConnected()) {
store.close();
}
} catch (MessagingException e) {
System.out.println(e);
}
}
//connexion après au compte mail laposte : meteo-dijon@laposte.net -- Password0
}
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 : ");
}
} catch (Exception e) {
System.out.println(e);
}
}
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) {
System.out.println(e);
}
}
}
} |
Le seul problème, est que j'ai une erreur que je n'arrive pas a résoudre lorsque le code tente le "store.connect(user, password)"...
Voila le résulta dans la console :
Code:
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
| DEBUG: setDebug: JavaMail version 1.5.0-b01
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: false
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: false
DEBUG POP3: mail.pop3.starttls.required: false
pop3://pop.laposte.net
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "pop.laposte.net", port 110, isSSL false
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.SocketException: Socket is not connected: connect
///////////////////////////////////////////////////
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.SocketException: Socket is not connected: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:209)
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 testMail.Main.main(Main.java:40)
Caused by: java.net.SocketException: Socket is not connected: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:299)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:112)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:260)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:205)
... 4 more
///////////////////////////////////////////////////
java.net.SocketException: Socket is not connected: connect
*************************************************** |
(Ps : l'envoi d'un mail "fonctionne" bien, même si en local il me faut utiliser "fakeSMTP-2.0" pour simuler un SMTP... Est-ce qu'il me faut l'équivalent pour le pop3? sachant que a terme ce code sera mit dans une portlet de liferay, il me faudrait aussi un serveur pop3 sur le serveur?)
Edit (22/02/2017) : j'ai avancer dans la résolution du problème, il ne semble pas venir du code, mais du réseaux en lui même, quand j'essaye la commande "telnet pop.laposte.com 995" (ou même d'autre mail comme gmail), il me met qu'il n'arrive pas a ce connecter...