dka*_*arp 25
使用该FETCH命令检索所有消息信息.但是,您有两种选择如何使用它.
首先,您可以逐字检索整个电子邮件.在这种情况下,您将需要在客户端中包含MIME解析器以确定消息的结构.(每个平台至少有一个或两个流行的MIME解析器;因为你还没有告诉我们你编写的是什么,我不能为你推荐一个.)一旦从你的MIME解析器中获得了消息结构,你就'我需要一些客户端逻辑来确定哪些部分是附件.值得一看RFC 2183来帮助您入门.一般来说,Content-Disposition以" attachment" 开头的部分将成为附件,但所有邮件客户端作者都会经历一个试错阶段,并将其设置为正确.要下载整个电子邮件,您需要发出IMAP命令
$ UID FETCH <uid> BODY.PEEK[]
Run Code Online (Sandbox Code Playgroud)
其次,您可以让IMAP服务器通过发出一个FETCH BODYSTRUCTURE(注意:没有方括号)来解析消息结构.您必须自己解析返回的BODYSTRUCTURE数据; IMAP RFC 解释了格式并给出了一些例子.
# message, no attachments:
("TEXT" "PLAIN" ("CHARSET" "ISO-8859-1" "FORMAT" "flowed") NIL NIL "7BIT" 1469 50 NIL NIL NIL NIL)
# message, one attachment
(("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "QUOTED-PRINTABLE" 56 1 NIL NIL NIL NIL)("AUDIO" "X-WAV" ("NAME" "voicemail.wav") NIL NIL "BASE64" 152364 NIL ("attachment" ("FILENAME" "voicemail.wav")) NIL NIL) "MIXED" ("BOUNDARY" "----_=_NextPart_001_01C4ACB3.5AA7B8E2") NIL NIL NIL)
Run Code Online (Sandbox Code Playgroud)
一旦确定了您感兴趣的部分,就可FETCH以为可显示的消息体发出一个.然后,您的客户端可以只列出消息附件(从BODY响应中解析出来),然后FETCH如果用户点击它们,则可以返回它们.因此,您要发布的IMAP命令将遵循:
$ UID FETCH <uid> (BODY ENVELOPE) # get structure and header info
$ UID FETCH <uid> (BODY[1]) # retrieving displayable body
$ UID FETCH <uid> (BODY[2]) # retrieving attachment on demand
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16550 次 |
| 最近记录: |