如何使用Java邮件在Gmail中永久删除电子邮件(POP3客户端和IMAP)

问题描述:

我一直在使用java邮件(POP3客户端& IMAP)来自动执行Gmail操作。其中一个操作是删除邮件和我使用下面的代码 -如何使用Java邮件在Gmail中永久删除电子邮件(POP3客户端和IMAP)

public void deleteInboxMasseges() throws IOException, MessagingException 
{ 
    store = getConnection(EMAIL_USERNAME, EMAIL_PASSWORD); 
     if (store != null) 
     { 
      int inboxMassegeCount = inbox.getMessageCount(); 
      Message[] messages = inbox.getMessages(); 
      for (int i = 0; i < inboxMassegeCount; i++) 
      { 
       messages[i].setFlag(Flags.Flag.DELETED, true); 
      } 
      inbox.expunge(); 
     } 
    } 

邮件来自“收件箱”,但其只不是“垃圾”删除了“所有邮件”文件夹。我想永久删除它。是否有任何直接删除邮件的方式,而不是从“收件箱”中删除邮件?

不幸的是,这是一个多步骤的过程,需要使用IMAP而不是POP完成。要永久删除GMail中的某些内容,您需要将其移至垃圾箱,然后将其从垃圾箱中删除。它支持MOVE扩展,所以这不是太糟糕。您还必须发现垃圾桶文件夹名称,可能使用LIST,因为它是本地化的。

a001 UID MOVE xxx "[Gmail]/Trash" 
* OK [MOVEUID xxxxxxx yyy] Message moved 
a002 SELECT "[Gmail]/Trash" 
a003 UID STORE yyy +FLAGS (\Deleted) 
a004 UID EXPUNGE yyy 

然后它就会真正消失。

对于大多数用户来说,将它移动到垃圾箱就足够了。它将在稍后自行消失。

+0

** @ Max **感谢您的意见。我们尝试根据您的输入对其工作正常。贝娄我们尝试的场景1.首先,我们将邮件从**收件箱**移至**垃圾箱**,2.将邮件从**所有邮件**移至**垃圾箱**,最后我们将邮件从* *垃圾箱**文件夹。现在它工作正常。 –

+0

@Max你可以分享代码片段吗? 我似乎在做你所描述的......但我的信息留在垃圾箱里。 – klubi

可能您会在您的Gmail帐户设置中解决此问题。

的Gmail具有设置页下面的选项,转发和POP/IMP标签:

当被删除,而从最后IMAP资料夹删除标记的消息:

  • 存档消息(默认)
  • 将消息移至垃圾箱
  • Immed亲爱的删除邮件永远

尝试在您的帐户中设置最后一个选项(立即删除邮件永远)并再次运行您的代码。

祝你好运。

+0

以我的经验,尽管有措辞,但这种设置实际上并没有改变任何东西。 – Max

+0

@达尼洛感谢您宝贵的建议,我试过这个,但它不工作。 –