如何使用JavaMail从Google Mail(Gmail)中读取包含多个标签的电子邮件?

时间:2010-08-19 12:01:33

标签: java gmail imap javamail

在Google Mail中,我希望获取已分配多个标签的邮件。例如,如果在收件箱中我们有三封电子邮件:

带有Label_A和Label_B的Email_1

带有Label_A和Label_B的Email_2

带有Label_A和Label_C的Email_3

然后我想同时选择Label_A和Label_B,即Email_1和Email_2。目前,以下代码适用于单标签情况,但有多种方法可以使用多个标签吗?感谢。


Properties props = System.getProperties();
Session session = Session.getInstance(props, null);

Store store = session.getStore("imaps");
store.connect("imap.gmail.com", -1, "abc@def.com", "password");

Folder folder = store.getDefaultFolder();

folder = folder.getFolder("Label_A");
folder.open(Folder.READ_WRITE);      

int totalMessages = folder.getMessageCount();
int newMessages = folder.getNewMessageCount();
System.out.println("Total messages = " + totalMessages);
System.out.println("New messages = " + newMessages);

2 个答案:

答案 0 :(得分:2)

你应该可以这样做:

private Store store;
private Folder Label_A; 
private Folder Label_B; 
    ...
        Label_A = store.getFolder("Label_A"); 
        Label_B = store.getFolder("Label_B"); 

答案 1 :(得分:1)

我最终必须编写自己的原始IMAP命令,以允许javamail使用Gmail的IMAP扩展。然后这就行了。

Access to Gmail labels: X-GM-LABELS

然后使用您的命令发出:folder.doCommand()。