我正在使用 ruby 的 Net::IMAP 对象,我可以使用以下任一方法检索一组电子邮件:
IMAP.all ..args..
Run Code Online (Sandbox Code Playgroud)
或者
IMAP.find ..args..
Run Code Online (Sandbox Code Playgroud)
但是无论如何都可以检索特定的电子邮件,例如最好通过 message-id 标头?
这是可能的还是我仅限于all并find试图用更好的参数缩小结果集?
我不明白您在 IMAP 中使用的是什么技术。但是,IMAP 规范提供了按各种字段(包括电子邮件标题)进行搜索的能力。您可以使用以下 IMAP 命令检索带有 Message-Id 的电子邮件的 UID <53513DD7.8090606@imap.local>:
0005 UID SEARCH HEADER Message-ID <53513DD7.8090606@imap.local>
Run Code Online (Sandbox Code Playgroud)
然后,这会给你一个响应,如下所示:
* SEARCH 1
0005 OK UID completed
Run Code Online (Sandbox Code Playgroud)
在我的例子中,带有 Message-Id 的电子邮件<53513DD7.8090606@imap.local>是第一个,所以 SEARCH 命令返回了一个匹配的 UID 1。
然后,您可以使用UID FETCH命令检索消息,例如:
0006 UID FETCH 1 BODY[]
Run Code Online (Sandbox Code Playgroud)
当然,如果您事先知道 UID,则可以跳过该UID SEARCH步骤,但这取决于您的应用程序。
| 归档时间: |
|
| 查看次数: |
7299 次 |
| 最近记录: |