【发布时间】:2011-03-13 08:18:33
【问题描述】:
我遇到了一些令人不安的事情。我正在设置一个 POP 帐户接收器,它看起来在某些情况下可以正常工作。当我使用端口 110 连接到我的服务器时,它工作正常(尝试连接 SSL 时出现错误消息,这是正常的)。 但是当我尝试使用 SSL 的端口 995 时,看起来 javax.mail (1.4.3) 在执行 input.readLine() 命令(标记为已弃用,顺便说一句)时阻塞,而不是抛出 IOException它应该抛出......
我将添加一个超时来防止这种情况发生,但想听听您对此的看法。有人已经经历过吗?知道如何克服它吗?
这就是我创建 Store 对象的方式:
Properties pop3Props = new Properties();
pop3Props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
pop3Props.setProperty("mail.pop3.port", Integer.toString(hostPort));
pop3Props.setProperty("mail.pop3.socketFactory.port", Integer.toString(hostPort));
pop3Props.setProperty("mail.pop3.starttls.enable", String.valueOf(STARTTLS));
pop3Props.setProperty("mail.pop3.auth", String.valueOf(AUTH));
// Create session and URL
Session session = Session.getInstance(pop3Props, null);
session.setDebug(true);
URLName url = new URLName(POP3, host, hostPort, "", username, password);
// Create the store
if (useSSL) {
return new POP3SSLStore(session, url);
} else {
return new POP3Store(session, url);
}
这就是我试图连接这个对象的方式:
store.connect(host, hostPort, username, password);
这是使一切冻结的 javax.mail 行(包括原始评论):
String line = input.readLine(); // XXX - readLine is deprecated
非常感谢您的帮助!
摩根
【问题讨论】:
-
关于“某些”案例的更多信息?您能发布一段行为异常的代码吗?
-
嗨。我已经用更多细节更新了讨论。非常感谢!
-
“输入”对象是什么类型的?
-
这是一个数据输入流。我没有写太多关于 javax.mail 代码的文章,因为我猜/希望它应该可以工作......我可能在配置中遗漏了一些东西,但看不到什么。我检查了java.sun.com/products/javamail/javadocs/com/sun/mail/pop3/… 以了解哪些属性可能导致或防止任何问题,但我被困住了......非常感谢!