我正在尝试使用JavaMail API访问mailinators消息。
我可以正确连接到服务器等但是在阅读消息时我一直在接收"文件夹未打开"异常,当我检查文件夹是否打开,如果没有打开文件夹,那也无济于事。我想由于某种原因,邮件发送者会终止连接。
如果我尝试获取消息的输入流而不是使用getContent,我可以从输入流中读取并且它包含消息的样式等但是由于某种原因,我似乎从输入流中读取的数据不包含消息体..
如果这是关于mailinator的,或者你可以提供任何支持pop3或其他易于阅读的随机电子邮件阅读服务,如果我在这个项目中使用mailinator,这并不重要。
我目前的邮件阅读代码。
private void checkMail(String user) {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
Store store = session.getStore("pop3");
store.connect("pop.mailinator.com", 110, user, "12345678");
Folder inbox = store.getFolder("inbox");
if(inbox == null) {
System.out.println("no inbox");
} else {
inbox.open(Folder.READ_ONLY);
for(Message message: inbox.getMessages()) {
byte[] buffer = new byte[10000];
int read = 0;
try {
while((read = message.getInputStream().read(buffer, 0, 1024)) > 0) {
for(int i = 0; i < buffer.length; i++) {
System.out.print((char)buffer[i]);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*try {
System.out.println(message.getContent().toString());
} catch (IOException e) {
e.printStackTrace();
}*/
}
}
inbox.close(false);
store.close();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当从输入流读取时,看起来输入流永远不会结束,只是重新开始。我的目的是获取信息的主体和主题。
答案 0 :(得分:0)
如果您正在从消息中读取InputStream,那么显然文件夹已打开。 你什么时候得到“文件夹未打开”的例外? protocol trace显示什么?如果您认为服务器是问题的端口,则可以尝试使用Gmail。此外,您还需要fix your use of getDefaultInstance。
答案 1 :(得分:0)
过去的一段时间,Mailinator改变了行为,禁止POP3访问(或仅为付费客户预留)。也许那是你的问题(如果代码与其他邮件提供商合作)。