JavaMailAPIを使用してmailinatorsメッセージにアクセスしようとしています。
サーバーなどに正しく接続できますが、メッセージを読むときに「フォルダが開いていません」という例外が表示され続けます。フォルダが開いているかどうかを確認しているときと、フォルダを開いていない場合は、どちらも役に立ちません。なんらかの理由でmailinatorが接続を終了したと思います。
getContentを使用せずにメッセージのinputstreamを取得しようとすると、inputstreamから正常に読み取ることができ、メッセージのスタイルなどが含まれていますが、何らかの理由で、inputstreamから読み取ったデータにメッセージ本文が含まれていないようです。
これが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();
}
}
また、inputstreamから読み取る場合、inputstreamは決して終了せず、最初からやり直すだけのように見えます。私の目的は、メッセージの本文と件名を取得することです。