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

标签 java jakarta-mail imap pop3

我一直在使用 java 邮件(POP3 客户端和 IMAP)来自动化 Gmail 操作。其中一项操作是删除邮件,我使用以下代码 -

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

然后就真的没了。

对于大多数用户来说,将其移至废纸篓就足够了。它稍后会自行消失。

关于java - 如何使用 Java 邮件(POP3 客户端和 IMAP)在 Gmail 中永久删除电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44497885/

相关文章:

java - 如何编写查询以获取一周前在 JPA 中创建的记录

Java:PrintStream 意外自动刷新

imap - IMAP UID 的可靠性如何?

coldfusion - 如何使用 Coldfusion 从 IMAP 获取所有内联图像 CID 值?

java - 如何以编程方式打开 POP3 文件夹

imap - IMAP 的空闲搜索空闲中是否存在竞争条件?

java - GraphQL-Java 将 HTTP header 发送到 REST 端点

java - 在 Java 中,我可以从 Class 对象创建匿名子类的实例吗?

java - 我可以用 Java 在邮件服务器上执行搜索吗?

Java Mail 发送邮件时出错