如何在命令行中通过 IMAP 搜索电子邮件?

如何在命令行中通过 IMAP 搜索电子邮件?

我想在 IMAP 服务器上搜索我是否已从某些电子邮件地址发送、抄送或接收电子邮件,如果是,则检索邮件正文的标题和片段。

https://tewarid.github.io/2011/05/10/access-imap-server-from-the-command-line-using-openssl.html

我看到上面的示例使用 openssl 访问 imap。但不清楚它是否是一个合适的搜索IMAP的工具?

我怎样才能实现这个目标?

答案1

这不是一个合适的工具。

Openssl 不是 IMAP 客户端。它能够将纯文本通信封装在 TLS/SSL 隧道中 - 与 IMAP 中发生的 IMAP 加密方式完全相同。因此,该文章基本上是一篇描述如何使用 telnet 手动键入 IMAP 命令的文章,只是用加密安全的替代方案替换 telnet。你不是一个命令打字机。将其留给知道如何正确使用 IMAP 的库。

您需要一个 IMAP 客户端。 CURL 实际上可以下载消息部分,因此,请在此处执行您尝试执行的操作。 fetchmail 也是如此。实际上有相当多的 IMAP 客户端 - 可能也适用于您选择的脚本语言!我强烈建议您不要使用 shell,而是使用更合适的脚本语言,因为您确实不想为每封电子邮件重新建立与服务器的连接。事实上,在不到一分钟的时间内,我的邮件服务器会在前几十个连接请求后阻止您。

然而,你所做的事情对于实现你想要的东西来说毫无意义。相反,您应该要求服务器代表您在服务器本身上进行搜索,而不是尝试下载所有邮件标头并在其中查找匹配项。 IMAP 客户端倾向于提供对 IMAP 提供的搜索协议的访问。所以就走那条路吧。

相关内容