我有以下代码连接到邮件服务器的收件箱:
Store popStore = popSession.getStore("pop3");
popStore.connect(address, userName, password);
Folder inboxFolder = popStore.getFolder("Inbox");
发布这个我检查新邮件。现在,当我连接到Gmail时,我也会收到来自已发送邮件的邮件,而实际上它应该只来自收件箱文件夹。雅虎这个工作正常。
任何想法可以在Gmail中导致此问题?
编辑:我也尝试过使用INBOX,结果是相同的
答案 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官方谷歌回答。