1つのメールボックスからメッセージを取得する最善の方法(サーバーからのメッセージをすばやく読み込む)がわかります(INBOX、OUTBOXなど)。私はフォルダーfeth()メソッドとgetMessages()メソッドを見つけましたが、私は2つのメソッドの間に何が良いか理解していません。javamail API(fetch()またはgetMessages())を使用してメールを取得する最善の方法は何ですか?
私の現在のコード使用そして、getMessages()メソッドが、それはまだ遅いです:
public static void fetch(String Host, String storeType, String user,
String password) {
try {
// create properties field
Properties properties = new Properties();
properties.put("mail.store.protocol", "imaps");
properties.put("mail.imaps.host", Host);
properties.put("mail.imaps.port", "993");
properties.put("mail.imaps.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
// emailSession.setDebug(true);
// create the IMAP store object and connect with the imap server
Store store = emailSession.getStore("imaps");
store.connect(Host, user, password);
// create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
writePart(message);
String line = reader.readLine();
if ("YES".equals(line)) {
message.writeTo(System.out);
} else if ("QUIT".equals(line)) {
break;
}
}
// close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
誰かが右より良い方法だものを私に説明できます!
良い説明のために@Bill Shannonありがとう、今私はfetchとgetMessagesメソッドの機能を理解しています。あなたの説明では、IMAPよりPOP3プロトコルを使用してfetchメソッドを使用する方が良いですか、間違っていますか? –
POP3を使用するほうが賢明なのは、すべての電子メールをダウンロードしてサーバーから削除し、できるだけ早く接続を終了する場合です。他のほとんどすべてについては、可能であればIMAPを使用してください。 –