好的,我一直在努力整理一些能够读取共享邮箱收件箱的代码。
我能够找到这段代码
try {
// create properties field
Properties properties = new Properties();
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", "110");
Session emailSession = Session.getInstance(properties, null);
emailSession.setDebug(true);
// create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, username, password);
// create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Text: " + message.getContent().toString());
}
// close the store and folder objects
emailFolder.close(false);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
导致我出现问题的一点是,即使我已经指定了端口110,它仍然会更改为995.
以下是我从JavaMail进行的调试
DEBUG: setDebug: JavaMail version 1.5.2
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]
DEBUG POP3: mail.pop3s.rsetbeforequit: false
DEBUG POP3: mail.pop3s.disabletop: false
DEBUG POP3: mail.pop3s.forgettopheaders: false
DEBUG POP3: mail.pop3s.cachewriteto: false
DEBUG POP3: mail.pop3s.filecache.enable: false
DEBUG POP3: mail.pop3s.keepmessagecontent: false
DEBUG POP3: mail.pop3s.starttls.enable: false
DEBUG POP3: mail.pop3s.starttls.required: false
DEBUG POP3: mail.pop3s.apop.enable: false
DEBUG POP3: mail.pop3s.disablecapa: false
DEBUG POP3: connecting to host "removed", port 995, isSSL true
之后我收到以下错误
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: removed, 995; timeout -1;
我看了很多帖子,似乎都没有解决这个问题,我在API中找不到它的引用。
答案 0 :(得分:1)
您指定pop3s
但没有为其设置端口,因此它使用默认值995.请参阅here:
mail.pop3.ssl.enable boolean If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the "pop3" protocol and true for the "pop3s" protocol.
我将它留给@BillShannon告诉你如何指定一个非默认的pop3s
端口。
或者你真的打算使用pop3
?
答案 1 :(得分:0)
如果你想使用端口110,标准pop3端口,你为什么要使用&#34; pop3s&#34; (pop3 over SSL)协议而不是&#34; pop3&#34;协议
如果你想使用标准端口,为什么要指定它而不是让JavaMail使用标准端口?
另请注意,如果您确实想使用pop3s协议,则设置pop3协议的属性不会产生任何影响。您将要设置&#34; mail.pop3s。*&#34;属性。