我意识到有许多库可以从Java,Python等访问IMAP。但我想要做的是非常具体的,并且与大多数imap示例相反。
简单的部分:
非典型部分:
最后一点是个问题。我尝试过的每个电子邮件客户端都下载了20,000个电子邮件标题 - 我不需要这样看。
使用POP3脚本我刚刚给出了顺序ID,1,2,3 ......
但我见过的每个IMAP示例似乎都使用了从标题中获取的某些字段。那么也许删除IMAP消息需要一个你无法猜到的ID? (并且只能通过查询来获得?)
如果我确实需要获取标题,这至少可以做到尽可能紧凑吗?或者让我一次只做100个?
或者,我试图通过电子邮件客户端UI删除整个文件夹,但这似乎不起作用。我认为它试图首先将所有标题移动到垃圾箱,然后失败,所以永远不会进入清除部分。所以我不确定删除文件夹实际上比删除其内容更有效。
任何想法都赞赏。我通常使用Java或Python,但我很灵活。我认为这是一个协议问题,而不是库问题。
答案 0 :(得分:2)
假设你没有使用非典型服务器(比如非常典型的gmail),你可以在LOGIN和SELECT [文件夹]之后执行这些命令:
A001 STORE 1:N +FLAGS (\Deleted)
A002 EXPUNGE
A003 STORE 1:N +FLAGS (\Deleted)
A004 EXPUNGE
依此类推,用批量大小替换N.这不会使用垃圾文件夹(除非您的IMAP服务器具有特殊逻辑,例如Gmail:for gmail,调整您的IMAP访问设置)。
你应该可以这样做:
A001 STORE 1:* +FLAGS (\Deleted)
A002 EXPUNGE
这可能需要一段时间。
事实上,您可以使用socat之类的工具登录并自行说出协议:
socat READLINE: OPENSSL:[server]:993,noverify,crlf
a LOGIN [user] "[password]"
b SELECT [folder]
然后从上面存储和删除命令。
答案 1 :(得分:0)
IMAP specification提供DELETE
command,可以销毁整个邮箱。