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 :
Le code fonctionne bien en le lançant avec une JRE6 (1.6.0_38-b05) :
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 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); } }
Par contre cela échoue avec une JRE7 (1.7.0_11-b21) :
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 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
Pour les deux JRE, j'ai effectué l'ajouté du certificat comme indiqué ici : http://notepad2.blogspot.fr/2012/04/...into-java.html
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 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
J'ai cherché toute la soirée de hier soir...
Merci à toutes les personnes qui pourront m'aider...
Bonne journée.
Partager