6

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

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

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

知道什么可能导致 Gmail 出现此问题吗?

编辑:我也试过收件箱,结果是一样的

4

4 回答 4

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);
        }
    }
}
于 2013-07-18T12:37:54.293 回答
3

有趣的问题。我做了一些研究,发现谷歌在这篇文章中说:

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

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

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

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

于 2013-07-23T16:59:49.210 回答
3

首先试试这个

Folder folder = store.getDefaultFolder();
folder = folder.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
于 2013-07-20T05:17:19.290 回答
2

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

阅读这个官方的谷歌答案。

于 2013-07-24T09:48:27.523 回答