2016-03-30 7 views
2

Ich versuche, eine Verbindung zum IMAP-Speicher basierend auf Benutzer-Server. Zum Beispiel habe ich mehrere Server wie 143 mit ssl und 993 ohne ssl. Wenn ich versuche, eine Verbindung zu 143 ssl Server herzustellen, sagt es eine einfache Verbindung. Gibt es eine Möglichkeit, eine Verbindung zu diesem Geschäft herzustellen?Java IMAP Verbindung zu speichern mit und ohne ssl

Und gibt es noch andere IMAP als Javamail in Java?

Einige Code unten->

Properties props = System.getProperties(); 
String imapProtocol = server.getImapSsl() != null && server.getImapSsl() == true ? "imaps" : "imap"; 
props.put("mail.store.protocol", imapProtocol); 
props.put("mail." + imapProtocol + ".port", server.getImapPort()); 
props.put("mail." + imapProtocol + ".host", server.getImapHost()); 

javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null); 
Store store = mailSession.getStore(); 
store.connect(server.getImapHost(), server.getImapPort(), username, password); 

UPDATE (DEBUG) ->

DEBUG IMAP: enable STARTTLS 
DEBUG IMAP: closeFoldersOnStoreFailure 
DEBUG IMAP: trying to connect to host "imap.itheme.mn", port 143, isSSL false 
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE NAMESPACE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. 
DEBUG IMAP: AUTH: PLAIN 
DEBUG IMAP: AUTH: LOGIN 
DEBUG IMAP: protocolConnect login, host=imap.somemail.mn, [email protected], password=<non-null> 
A0 STARTTLS 
A0 OK Begin TLS negotiation now. 
A1 CAPABILITY 
* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE NAMESPACE AUTH=PLAIN AUTH=LOGIN 
A1 OK Pre-login capabilities listed, post-login capabilities have more. 
DEBUG IMAP: AUTH: PLAIN 
DEBUG IMAP: AUTH: LOGIN 
DEBUG IMAP: AUTHENTICATE LOGIN command trace suppressed 
DEBUG IMAP: AUTHENTICATE LOGIN command result: A2 NO [AUTHENTICATIONFAILED] Authentication failed. 

Antwort

1

Sie rückwärts die Portnummern bekam. 143 ist Klartext.

+0

Entschuldigung, wenn ich nicht klar genug war, ist die Serverkonfiguration auf Port 143 eingestellt, erfordert aber auch ssl. Ich kann die Serverkonfiguration nicht ändern, sie gehört mir nicht. Was können wir in dieser Situation tun? –

+0

Jemand hat Ihre Serverkonfiguration vermasselt. Und/oder Sie missverstehen die Serverkonfiguration. Wenn Sie an Port 143 ** mit ** SSL verbinden und es sich beschwert, dass es sich um eine reine Textverbindung handelt, raten Sie mal, es ist wahrscheinlich eine reine Textverbindung. Versuch das. –

+0

Beachten Sie auch, dass Sie Ihr Programm vereinfachen können, indem Sie einfach das Protokoll "imap" verwenden und [mail.imap.ssl.enable] festlegen (https://javamail.java.net/nonav/docs/api/com/sun/). mail/imap/package-summary.html # mail.imap.ssl.enable) Eigenschaft entsprechend; JavaMail wählt die Portnummer, sodass Sie sie nicht festlegen müssen, vorausgesetzt, Sie verwenden die korrekten Standardportnummern. Vielleicht möchten Sie auch die [mail.imap.startltls.enable] (https://javamail.java.net/nonav/docs/api/com/sun/mail/imap/package-summary.html#mail.imap verwenden .starttls.enable) -Eigenschaft, wenn Ihr Server dies mit Nur-Text-Verbindungen benötigt. –