import javax.mail.*
を使用してメッセージを取得しようとしています。ここでクラスでメールを受信
、すべての作品:
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore(provider);
try {
store.connect(host, username, password);
Folder inbox = store.getFolder("INBOX");
if (inbox == null) {
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
System.out.println("Message " + (i + 1));
messages[i].writeTo(System.out);
}
inbox.close(false);
store.close();
}
catch (IOException e){
e.printStackTrace();
しかし、あなたは別のクラスにメールの受信を取る場合は、エラー「例外がスレッドで」メイン「javax.mail.MessagingException:接続されていません」があります
発信者:
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore(provider);
Mail mail=new Mail();
Folder inbox = store.getFolder("INBOX");
store.connect(host, username, password);
inbox = store.getFolder("INBOX");
mail.GetMessage(host,username,password,inbox,store);
クラスメール:
public void GetMessage(String host,String username,String password,Folder inbox,Store store) throws MessagingException, IOException {
try {
inbox = store.getFolder("INBOX");
if (inbox == null) {
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++) {
System.out.println("Message " + (i + 1));
messages[i].writeTo(System.out);
}
inbox.close(false);
store.close();
} catch (IOException e) {
e.printStackTrace();
}
}
カプセル化が壊れています。 'Mail.GetMessage()'はホスト/ユーザ名/パスワードをとり、メールサーバ自身に接続するか、**または**それは 'store'(そしてフォルダ名)を取るべきです、' getFolder() 'on **または**既に見つかった 'Folder inbox'を取り、それを操作する必要があります。しかし、 'GetMessage()'がそれを開けなかった場合、 'GetMessage()'の 'store'を閉じるべきではありません。また、メールを取得しようとすると、ストアが閉じられたまたは破損している。適切なカプセル化を使用してコードを再構築します。 – AJNeufeld
また、スタックトレースを見て、例外が発生している行を特定し、問題の説明に**を含めてください。 – AJNeufeld
問題は単純な注文受注のエラーであり、今後の読者には役立たない可能性があるため、この質問を議論の対象外としています。 – AJNeufeld