Lecture mails GMail en IMAP avec JavaMail
Bonjour,
Je cherche à lister les mails qui sont sur une boite aux lettres GMail par JavaMail grâce à l'accès IMap.
Voici le code permettant de faire cette liste :
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
|
package test;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
public class IMapMain {
public static void main(final String[] args) throws MessagingException {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imap");
Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
Store store = session.getStore("imaps");
System.out.println(store.getClass());
store.connect("imap.gmail.com", "test.imap2013", "javamail");
System.out.println(store);
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);
Message messages[] = inbox.getMessages();
for(Message message:messages) {
System.out.println(message.getSubject());
}
inbox.close(true);
}
} |
Le code fonctionne bien en le lançant avec une JRE6 (1.6.0_38-b05) :
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
|
DEBUG: setDebug: JavaMail version 1.4.5
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
DEBUG: mail.imap.fetchsize: 16384
DEBUG: mail.imap.statuscachetimeout: 1000
DEBUG: mail.imap.appendbuffersize: -1
DEBUG: mail.imap.minidletime: 10
class com.sun.mail.imap.IMAPSSLStore
DEBUG: trying to connect to host "imap.gmail.com", port 993, isSSL true
* OK Gimap ready for requests from 87.231.161.55 j50if164427wec.155
A0 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2
A0 OK Thats all she wrote! j50if164427wec.155
DEBUG IMAP: AUTH: XOAUTH
DEBUG IMAP: AUTH: XOAUTH2
DEBUG: protocolConnect login, host=imap.gmail.com, user=test.imap2013, password=<non-null>
DEBUG IMAP: LOGIN command trace suppressed
DEBUG IMAP: LOGIN command result: A1 OK test.imap2013@gmail.com test imap authenticated (Success)
A2 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS ENABLE MOVE
A2 OK Success
imaps://test.imap2013@imap.gmail.com
DEBUG: connection available -- size: 1
A3 SELECT Inbox
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Flags permitted.
* OK [UIDVALIDITY 1] UIDs valid.
* 3 EXISTS
* 0 RECENT
* OK [UIDNEXT 4] Predicted next UID.
A3 OK [READ-WRITE] Inbox selected. (Success)
A4 FETCH 1 (ENVELOPE INTERNALDATE RFC822.SIZE)
* 1 FETCH (RFC822.SIZE 2979 INTERNALDATE "21-Mar-2013 07:03:01 +0000" ENVELOPE ("Thu, 21 Mar 2013 00:03:01 -0700" "=?ISO-8859-1?Q?Utilisez_Gmail_sur_votre_t=E9l=E9phone_portable?=" (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("test imap" NIL "test.imap2013" "gmail.com")) NIL NIL NIL "<CAPQdmmt=6wxZx9B+_Bciqy8bFpLmR=KBxbF2WSwxv3bRgNkoRQ@mail.gmail.com>"))
A4 OK Success
Utilisez Gmail sur votre téléphone portable
A5 FETCH 2 (ENVELOPE INTERNALDATE RFC822.SIZE)
* 2 FETCH (RFC822.SIZE 3629 INTERNALDATE "21-Mar-2013 07:03:02 +0000" ENVELOPE ("Thu, 21 Mar 2013 00:03:02 -0700" "Importez vos contacts et anciens e-mails" (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("test imap" NIL "test.imap2013" "gmail.com")) NIL NIL NIL "<CAPQdmms85jQ=VAka8i2SzyjsXtMhFGnG2hz17GCvjyHYOE7qTA@mail.gmail.com>"))
A5 OK Success
Importez vos contacts et anciens e-mails
A6 FETCH 3 (ENVELOPE INTERNALDATE RFC822.SIZE)
* 3 FETCH (RFC822.SIZE 3193 INTERNALDATE "21-Mar-2013 07:03:02 +0000" ENVELOPE ("Thu, 21 Mar 2013 00:03:02 -0700" "=?ISO-8859-1?Q?Personnalisez_Gmail_avec_des_couleurs_et_des_th=E8mes?=" (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("=?ISO-8859-1?Q?L'=E9quipe_Gmail?=" NIL "mail-noreply" "google.com")) (("test imap" NIL "test.imap2013" "gmail.com")) NIL NIL NIL "<CAPQdmms=Oa4=jCkcZ8sjy2tLrmUn=3X8427GA8BcCHn_m9Z08Q@mail.gmail.com>"))
A6 OK Success
Personnalisez Gmail avec des couleurs et des thèmes
A7 CLOSE
A7 OK Returned to authenticated state. (Success)
DEBUG: added an Authenticated connection -- size: 1 |
Par contre cela échoue avec une JRE7 (1.7.0_11-b21) :
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
|
DEBUG: setDebug: JavaMail version 1.4.5
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
DEBUG: mail.imap.fetchsize: 16384
DEBUG: mail.imap.statuscachetimeout: 1000
DEBUG: mail.imap.appendbuffersize: -1
DEBUG: mail.imap.minidletime: 10
class com.sun.mail.imap.IMAPSSLStore
DEBUG: trying to connect to host "imap.gmail.com", port 993, isSSL true
Exception in thread "main" javax.mail.MessagingException: Software caused connection abort: recv failed;
nested exception is:
java.net.SocketException: Software caused connection abort: recv failed
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:670)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at test.IMapMain.main(IMapMain.java:23)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:548)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:352)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:113)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:111)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:637)
... 3 more |
Pour les deux JRE, j'ai effectué l'ajouté du certificat comme indiqué ici : http://notepad2.blogspot.fr/2012/04/...into-java.html
J'ai cherché toute la soirée de hier soir...
Merci à toutes les personnes qui pourront m'aider...
Bonne journée.