gpt4 book ai didi

java - IMAP "Over Quota"特定脚本

转载 作者:行者123 更新时间:2023-11-30 04:50:41 25 4
gpt4 key购买 nike

我意识到有很多库可以从 Java、Python 等访问 IMAP。但我想要做的非常具体,并且与大多数 imap 示例相反。

简单的部分:

  • 给定 IMAP 服务器、登录名和特定文件夹名称
  • 删除该文件夹中的所有邮件(或者删除该文件夹,如果这样更容易或更高效?)

非典型部分:

  • 每 N 次删除后执行一次删除
  • 包含一些重试和批量大小逻辑,以便繁忙的服务器 - 即使每个 session 删除和清除 100 条消息也会有所帮助。
  • 不要下载所有 header !

最后一点是个问题。我尝试过的每个电子邮件客户端在下载 20,000 个电子邮件 header 时都会卡住 - 我不需要看到这些 header 。

通过 POP3 脚本,我刚刚给出了连续 ID,1、2、3 ...

但是我见过的每个 IMAP 示例似乎都使用了从 header 中获取的某些字段。那么删除 IMAP 邮件可能需要一个您无法猜测的 ID? (并且只能通过查询来获取?)

如果我确实需要获取 header ,至少可以使其尽可能紧凑吗?或者让我一次只做 100 个?

或者,我尝试通过电子邮件客户端用户界面删除整个文件夹,但这似乎不起作用。我认为它首先尝试将所有 header 移至垃圾箱,但失败了,因此永远不会到达删除部分。所以我不确定删除文件夹实际上比删除其内容更有效。

任何想法表示赞赏。我通常使用 Java 或 Python 工作,但我很灵活。我认为这是一个协议(protocol)问题,而不是库问题。

最佳答案

假设您没有使用非典型服务器(例如非常非典型的 gmail),您可以在登录后执行以下命令,然后选择 [文件夹]:

A001 STORE 1:N +FLAGS (\Deleted)
A002 EXPUNGE
A003 STORE 1:N +FLAGS (\Deleted)
A004 EXPUNGE

依此类推,将 N 替换为批量大小。这不会使用垃圾文件夹(除非您的 IMAP 服务器具有特殊逻辑,例如 Gmail:对于 Gmail,请调整您的 IMAP 访问设置)。

你应该能够做到这一点:

A001 STORE 1:* +FLAGS (\Deleted)
A002 EXPUNGE

不过这可能需要一段时间。

事实上,您可以使用像 socat 这样的工具自己登录并说出协议(protocol):

socat READLINE: OPENSSL:[server]:993,noverify,crlf
a LOGIN [user] "[password]"
b SELECT [folder]

然后是上面的存储和删除命令。

关于java - IMAP "Over Quota"特定脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com