javax.mailを使用して、Googleからドラフト、スパム、ゴミのフォルダで電子メールを取得できません
-
25-10-2019 - |
質問
Gmailからすべてのフォルダーからメールを受け取りたいです。受信トレイ、送信、その他のフォルダーから電子メールを正常に受信します。しかし、ドラフト、スパム、ゴミからそれを取得しようとすると、例外が得られます。
09:51:45,622 ERROR MailRetriever.[main]getNoFlaggedMails:142 - Can't get messages: javax.mail.MessagingException: connection failure
javax.mail.MessagingException: connection failure
at com.sun.mail.imap.IMAPStore.getProtocol(IMAPStore.java:742)
at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:910)
at ua.com.stormlabs.gap.gmail.MailRetriever.getNoFlaggedMails(MailRetriever.java:133)
at ua.com.stormlabs.gap.gmail.GMailServiceProcessor.processFolder(GMailServiceProcessor.java:95)
at ua.com.stormlabs.gap.gmail.GMailServiceProcessor.start(GMailServiceProcessor.java:80)
at ua.com.stormlabs.gap.gmail.GMailGapApp.main(GMailGapApp.java:21)
これは、メールを取得するためのコードです。
Folder folder = imapSslStore.getFolder(folderName);
folder.open(Folder.READ_WRITE);
openedFolders.put(folderName, folder);
Flags searchFlags = new Flags(Flags.Flag.USER);
searchFlags.add(FLAG_PREFIX + READ_BY_GAP_FLAG);
Message[] messages = folder.search(new FlagTerm(searchFlags, false));
log.debug("Messages list retrieved: " + messages.length);
return messages;
フォルダ名私は失敗して開こうとします:
[Gmail]/Drafts
[Gmail]/Spam
[Gmail]/Trash
解決
最も簡単な答えは、ドラフト、スパム、ゴミはフォルダーではなく、Googleメールのラベルであるということです。私は自分の答えを検証するためにGoogle検索を行っています。
更新:いくつかのGoogle検索の後、私は だから投稿してください それは [Gmail]/*
フォルダーは選択不可能なフォルダーです。
他のヒント
Gmailアカウントで、Trash Folderの「[Google Mail]/Bin」などと呼ばれ、「Gmail]/Trash」という名前であることがわかりました。
私は英国にいます。最初にGmailアカウントを開設したとき、それは本当にme @googlemail.comではなく、@gmail.comでした。
お役に立てれば。
Folder[] f = store.getDefaultFolder().list();
for(Folder fd:f){
Folder t[]=fd.list();
System.out.println("-------"+fd.getName()+"------");
for(Folder f1:t)
System.out.println("->"+f1.getName());
}
次のフォルダー名:
[Gmail]/Spam
私にとっては完璧に機能します。 Javamailを使用してスパムフォルダーを読むためによく使用するコードは次のとおりです。
private void readFolder(int max, boolean deletes, List<Message> result, Store store, String folderName) throws MessagingException, IOException {
Folder folder = null;
try {
folder = store.getFolder(folderName);
folder.open(Folder.READ_WRITE);
Message[] messages = folder.getMessages();
for (int i = 0; i < messages.length && result.size() < max; i++) {
Message message = messages[i];
if (deletes && (!message.getFlags().contains(Flag.DELETED))) {
message.setFlag(Flag.DELETED, true);
}
result.add(message);
}
} finally {
if (folder != null) {
try {
folder.close(true);
} catch (Exception e) {
}
}
}
}
所属していません StackOverflow