【发布时间】:2010-09-08 20:06:45
【问题描述】:
我想使用 JavaMail 和 IMAP 从 Java 应用程序访问 Gmail 中的邮件。为什么我会收到 SocketTimeoutException ?
这是我的代码:
Properties props = System.getProperties();
props.setProperty("mail.imap.host", "imap.gmail.com");
props.setProperty("mail.imap.port", "993");
props.setProperty("mail.imap.connectiontimeout", "5000");
props.setProperty("mail.imap.timeout", "5000");
try {
Session session = Session.getDefaultInstance(props, new MyAuthenticator());
URLName urlName = new URLName("imap://MYUSERNAME@gmail.com:MYPASSWORD@imap.gmail.com");
Store store = session.getStore(urlName);
if (!store.isConnected()) {
store.connect();
}
} catch (NoSuchProviderException e) {
e.printStackTrace();
System.exit(1);
} catch (MessagingException e) {
e.printStackTrace();
System.exit(2);
}
我已经设置了超时值,这样它就不会“永远”超时。此外,MyAuthenticator 也有用户名和密码,这似乎与 URL 是多余的。还有另一种指定协议的方法吗? (我在 IMAP 的 JavaDoc 中没有看到它。)
【问题讨论】:
-
如果您想使用 JavaMail 访问 GMail 线程,您可能对 code.google.com/p/java-gmail-imap 感兴趣
-
这些基于 IMAP 的解决方案中的任何一个是否不再不再需要“允许不太安全的应用程序”?
标签: java gmail jakarta-mail imap