Gmail也会从已发送邮件中提取邮件

时间:2013-07-15 09:43:29

标签: java gmail javax.mail

我有以下代码连接到邮件服务器的收件箱:

Store popStore = popSession.getStore("pop3");
popStore.connect(address, userName, password);
Folder  inboxFolder = popStore.getFolder("Inbox");

发布这个我检查新邮件。现在,当我连接到Gmail时,我也会收到来自已发送邮件的邮件,而实际上它应该只来自收件箱文件夹。雅虎这个工作正常。

任何想法可以在Gmail中导致此问题?

编辑:我也尝试过使用INBOX,结果是相同的

4 个答案:

答案 0 :(得分:3)

以下是代码段。当我使用gmail检查时,收件箱和已发送邮件之间没有重叠。 (这应该是评论,作为格式化的答案发布)

javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
for (javax.mail.Folder folder : folders) {
    if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
        if (folder.getFullName().equalsIgnoreCase("[Gmail]/Sent Mail") 
                || folder.getFullName().equalsIgnoreCase("Inbox")) {
            System.out.println(folder.getFullName() + ": " + folder.getMessageCount());
            folder.open(Folder.READ_ONLY);
            for (Message m : folder.getMessages(
                               folder.getMessageCount() - 5, 
                               folder.getMessageCount())) {
                System.out.println("m.getSubject() = " + m.getSubject());
            }
            folder.close(true);
        }
    }
}

答案 1 :(得分:3)

首先尝试这个

Folder folder = store.getDefaultFolder();
folder = folder.getFolder("INBOX");
folder.open(Folder.READ_WRITE);

答案 2 :(得分:3)

有趣的问题。我做了一点研究,找到了this post,谷歌说:

  

启用POP后,除垃圾邮件,已删除垃圾邮件和聊天记录外,所有邮件都会下载到您的客户端。如果您不希望从Web界面发送的邮件下载到您的邮件客户端的收件箱,我们建议您在客户端中创建一个过滤器。

要按发件人创建过滤器,您可以执行以下操作:

String filter = "Not([SenderEmailAddress] = 'XXXXX@gmail.com')";
Items inboxItems = inboxFolder.Items.Restrict(filter);

其中XXXXX@gmail.com是您的电子邮件地址。此过滤器仅为您提供由您以外的人发送的项目。此外,Restrict方法可以替换为Find,但对于较大的数据集,Restrict会更快。

答案 3 :(得分:2)

当您使用回复或回复所有Gmail邮件通过邮件进行通信时,它将被视为收件箱邮件。因为它是会话视图。这样您发送的邮件也是收件箱邮件。所以你会在邮件中收到邮件。

阅读this官方谷歌回答。