JavaMail - Mailsabrufen Problem (imap)

Dave

Aktives Mitglied
Guten Tag,


ich bin grade dabei GWT zu üben und bastle an einem Mailprogramm so GWT macht mir da keine Schwierigkeiten genauso wie die Client/Server - Verbindung. Was jedoch rumzickt in das Verbinden auf den Mailserver. Ich bekomem da einen Timeout und weiss nicht warum, ich habe mir einige der Threads hier durchgelesen zu dem Thema aber keine Lösung gefunden :-/

So hier der Verbindungsaufbau:

Java:
private String imapHost = "imap.gmx.net";

public Store getConnectionStore() {
        Store store = null;
        try {
            // Get system properties
            Properties props = System.getProperties();
            // Mail-Server properties: Session verlangt die Informationen über Host, User, Passwd etc.
            props.setProperty("mail.imaps.host", imapHost);
            props.setProperty("mail.imaps.user", username);
            props.setProperty("mail.imaps.password", password);
            props.setProperty("mail.imaps.auth", "true");
            props.setProperty("mail.imaps.starttls.enable", "true");
            props.setProperty("mail.imaps.socketFactory.port", "993");
            props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.setProperty("mail.imaps.socketFactory.fallback", "false");
            
            // Initialisierung der Auth-Klasse zur Mail-Account-Authentisierung; in Session benutzt
            MailAuthenticator auth = new MailAuthenticator(username, password);

            // Session: steht für die Verbindung mit dem Mail-Server
            Session session = Session.getDefaultInstance(props, auth);
            // Gibt in der Console Debug-Meldungen zum Verlauf aus
            session.setDebug(true);
            boolean isSSL = true;
            // Store: dient dem zum Ablegen der Nachrichten
            store = isSSL ? session.getStore("imaps") : session.getStore("imap");
            store.connect();
        } catch (NoSuchProviderException e) {
            // TODO Auto-generated catch block
            System.err.println("##### - ConnectingMail(getConnectionStore - 1):");
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            System.err.println("##### - ConnectingMail(getConnectionStore - 2):");
            e.printStackTrace();
        }

        return store;
    }



und folgendes schmeist die Console raus:

Code:
DEBUG: setDebug: JavaMail version 1.4.3
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
DEBUG: enable STARTTLS
DEBUG: protocolConnect returning false, host=imap.gmx.net, user=****, password=<null>
DEBUG: trying to connect to host "imap.gmx.net", port 993, isSSL true
javax.mail.MessagingException: Connection timed out: connect;
  nested exception is:
	java.net.ConnectException: Connection timed out: connect
##### - ConnectingMail(getConnectionStore - 2):
javax.mail.MessagingException: Connection timed out: connect;
  nested exception is:
	java.net.ConnectException: Connection timed out: connect
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:618)
	at javax.mail.Service.connect(Service.java:313)
	at javax.mail.Service.connect(Service.java:172)
	at javax.mail.Service.connect(Service.java:121)
	at de.echodave.gwt.List.server.mail.ConnectingMail.getConnectionStore(ConnectingMail.java:57)
	at de.echodave.gwt.List.server.AdressServiceImpl.getFolder(AdressServiceImpl.java:71)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:525)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
	at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:201)
	at com.sun.mail.iap.Protocol.<init>(Protocol.java:109)
	at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:104)
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:585)
	... 32 more
##### - ConnectingMail(getFolders):
java.lang.IllegalStateException: Not connected
	at com.sun.mail.imap.IMAPStore.checkConnected(IMAPStore.java:1607)
	at com.sun.mail.imap.IMAPStore.getDefaultFolder(IMAPStore.java:1442)
	at de.echodave.gwt.List.server.mail.ConnectingMail.getFolders(ConnectingMail.java:188)
	at de.echodave.gwt.List.server.AdressServiceImpl.getFolder(AdressServiceImpl.java:74)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
erfolgreich: getFolders

Hat jemand von euch eine Idee an was es liegt?

Danke 🙂)
 
Hallo,

Ich habe zwar noch nie was mit imaps gemacht (sondern nur mit smtp) aber probier mal folgendes:
Kommentier bei dir die Zeile
Java:
 props.setProperty("mail.imaps.starttls.enable", "true");
aus und füge folgende Property hinzu:
Java:
props.put("mail.imaps.ssl.enable", "true");

MfG
hansmueller
 
Zu der Zeitüberschreitung deiner Verbindung kann ich nichts sagen. Bei mir im Code steht jedoch unabhängig der Variablen
Code:
isSSL
immer
Code:
"mail.imap.*"
bei den Properties. Kann mich da auch an ein paar Probleme erinnern. Versuch das mal ohne das s an imap.

Edit: Das timeout kannst du nebenbei gesagt mit
Code:
props.setProperty(("mail.imap.connectiontimeout", "120000");
einstellen. Wie lange dauert das Timeout bisher?
 
Zuletzt bearbeitet:
Beides probiert, beides bringt leider keinen Erfolg 🙁

Timeout war bis jetzt von mir nicht gesetzt worden also Default, waren gefühlte 10 Sekunden.


noch irgendwelche Vorschläge?
 
Ja, laut API gibt es das Property
Code:
props.setProperty("mail.imap*.password", password);
gar nicht.

Versuche anstatt der parameterlosen Methode
Code:
connect
,
Code:
connect(String host, int port, String user, String password)
. Keine Ahnung, was da der Unterschied sein soll, aber so steht es auch bei mir im Code 😉
 
Habe die Property auskommentiert und alle vier Varianten des Connects:
Code:
store.connect();
Code:
store.connect(username, password);
Code:
store.connect(host, username, password);
Code:
store.connect(host, port, username, password);

leider ohne Erfolg bleibt beim selben Fehler.
 
Ich versuche es mal mit pop3, sollte aber bei mir gehen da ich ein ProMail-Kunde bin.

Sorry für Doppelpost, konnte aber nicht mehr editieren.

Also ich habe es mit pop3 mit Propertys und ohne (auch mit imap probiert) und immer kommt die Timeout Fehlermeldung.


Kann es sein dass mein Firmennetzwerk die Verbindung blockiert?
 
Eine letzte Idee noch von mir: Versuche mal mit der Console
Code:
telnet imap.gmx.net 143
oder mit IMAPS Portnummer 993. Mal sehen, ob du da auch ein Timeout bekommst.
 
Habe es gemacht und mehrere Tests durchgeführt auch mit einem anderem Anbieter (iCloud), alle haben Timeouts bekommen (jeder Eintrag dauerte ca. 2-3 Minuten).

Ich versuch mal rauszukriegen welche Ports die Firewall blockiert...

Code:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>telnet imap.gmx.net 143
Connecting To imap.gmx.net...Could not open connection to the host, on port 143:
 Connect failed

C:\>telnet imaps.gmx.net 993
Connecting To imaps.gmx.net...Could not open connection to the host, on port 993
: Connect failed

C:\>telnet pop.gmx.net 110
Connecting To pop.gmx.net...Could not open connection to the host, on port 110:
Connect failed

C:\>telnet imap.mail.me.com 993
Connecting To imap.mail.me.com...Could not open connection to the host, on port
993: Connect failed

C:\>telnet imap.mail.me.com 143
Connecting To imap.mail.me.com...Could not open connection to the host, on port
143: Connect failed

C:\>telnet imaps.mail.me.com 993
Connecting To imaps.mail.me.com...Could not open connection to the host, on port
 993: Connect failed

C:\>telnet imaps.mail.me.com 993
Connecting To imaps.mail.me.com...Could not open connection to the host, on port
 993: Connect failed

C:\>


Edit:

:-/ alles klar es scheint so als ob nur der 80er Port frei ist.....

ich teste den Code bei mir zuhause ob er da gehen wird.
 
Zuletzt bearbeitet:
Ok Habe es jetzt endlich geschaft zuhause zu probieren, da gings ohne Probleme, also liegt es vermutlich an den Ports die nicht freigeschaltet sind bei mit im Betrieb ;-)
 

Neue Themen


Zurück
Oben