Java Gmail也可以从发送的邮件中提取邮件
我有以下代码连接到邮件服务器的收件箱:Java Gmail也可以从发送的邮件中提取邮件,java,gmail,jakarta-mail,Java,Gmail,Jakarta Mail,我有以下代码连接到邮件服务器的收件箱: Store popStore = popSession.getStore("pop3"); popStore.connect(address, userName, password); Folder inboxFolder = popStore.getFolder("Inbox"); 发布此邮件,我会检查是否有新邮件。现在,当我连接到Gmail时,我也会收到来自已发送邮件的邮件,而实际上它应该只来自收件箱文件夹。与雅虎这是工作的罚款 你知道是什么导致了
Store popStore = popSession.getStore("pop3");
popStore.connect(address, userName, password);
Folder inboxFolder = popStore.getFolder("Inbox");
发布此邮件,我会检查是否有新邮件。现在,当我连接到Gmail时,我也会收到来自已发送邮件的邮件,而实际上它应该只来自收件箱文件夹。与雅虎这是工作的罚款
你知道是什么导致了Gmail出现这个问题吗
编辑:我也尝试过收件箱,结果是一样的下面是一段代码片段。当我使用gmail时,收件箱和发送的邮件之间没有重叠。(这应该是一条评论,作为格式化的答案发布) 首先试试这个
Folder folder = store.getDefaultFolder();
folder = folder.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
有趣的问题。我做了一点调查,发现谷歌在其中说: 启用POP后,除垃圾邮件、垃圾和聊天外,所有邮件都会下载到客户端。如果您不希望从web界面发送的邮件下载到邮件客户端的收件箱,我们建议您在客户端中创建一个过滤器 要按发件人创建筛选器,可以执行以下操作:
String filter = "Not([SenderEmailAddress] = 'XXXXX@gmail.com')";
Items inboxItems = inboxFolder.Items.Restrict(filter);
其中
XXXXX@gmail.com
是您的电子邮件地址。此筛选器将仅提供由您以外的其他人发送的项目。此外,Restrict
方法可以替换为Find
,但是对于较大的数据集,Restrict
会快得多。当您在gmail中使用reply或reply to all进行邮件通信时,它将被视为收件箱邮件。因为它是对话视图。因此,您发送的邮件也是收件箱邮件。因此,您将在您的邮件中收到这些邮件
阅读谷歌官方答案。试试“收件箱”。。我猜您所指的“已发送邮件”可能是收件人的回复,这些邮件的主题行与前面的“RE:”相同,将尝试使用收件箱。没有,我已经通过从我现在的帐户发送带有独特主题的新邮件验证了您描述的场景downloading@rajesh:您正在显示真实代码吗?为什么不粘贴更多(非)工作示例?
用于(邮件m:folder.getMessages(folder.getMessageCount()-5,folder.getMessageCount())
是否只检查5封邮件?有趣的发现。但我相信这种标签只适用于我回复过的邮件。有些邮件是新写的。他们没有收件箱标签。同样,如果您发送的任何邮件都有收件箱
标签,此筛选器将修复它。我相信这是由于谷歌处理电子邮件对话视图的方式造成的。但我的问题是邮件没有收件箱标签。请参阅下面我对Arman回答的评论,关闭对话模式。但问题依然存在:-):-(@rajesh尝试一下。但我在新撰写的邮件中也遇到了问题,不仅仅是回复。如果你撰写了一封邮件,收件人回复了该邮件,那么谷歌会将你的原始邮件移动到收件箱中进行对话查看。我不确定你为什么会在没有回复的新邮件中看到这一点。没有收件人回复然而,对于那些没有收件箱标签的情况,我确实有一些我理解的情况,但是当邮件是新撰写并发送的,并且没有回复时,会出现一个问题
String filter = "Not([SenderEmailAddress] = 'XXXXX@gmail.com')";
Items inboxItems = inboxFolder.Items.Restrict(filter);