mat*_*iux 0 email shell imap telnet
我知道要获取所有消息体,这是命令:
[imap_code] UID FETCH [uid] BODY.PEEK[TEXT]
Run Code Online (Sandbox Code Playgroud)
因此,我获得了整个邮件正文.但我需要排除部分附件.我只想从发件人,文本和/或html写的消息.
有办法吗?
这是带有附件的完整原始html邮件
我想只得到
<div dir="ltr">This is the message body<div><ul><li>one</li><li>two</li></ul></div></div>
Run Code Online (Sandbox Code Playgroud)
如果没有html版本,则为纯文本
消息在任意树的部分中布局,父项是multipart/*或message/rfc822类型,子项是其他类型.在FETCH BODY[...]让任意提取任何这些部件.
不幸的是,消息没有标准布局.您可以获取BODYSTRUCTURE项以获取消息的MIME布局,但很难通过眼睛解析.
话虽如此,有一些常见的消息布局可以帮助您完成大部分工作.
最简单的是只有一个正文的消息,text/html或text/plain.只是取BODY[TEXT].
接下来是多格式,包括text/html和text/plain.它的MIME结构通常如下所示:
+ multipart/alternative [TEXT]
|- text/plain [1]
\- text/html [2]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你想要获取BODY[2].
如果消息是带有附件的单体,则它看起来像这样:
+ multipart/mixed or multipart/related [TEXT]
|- text/html or text/plain [1]
|- image/jpg [2]
| ...
\- image/gif
Run Code Online (Sandbox Code Playgroud)
在这种情况下你想要BODY[1].
最后是这两个:带有附件的多格式主体.它往往看起来像:
+ multipart/mixed or multipart/related [TEXT]
|-+ multipart/alternative [1]
| |- text/plain [1.1]
| \- text/html [1.2]
|- image/jpeg [2]
|- image/gif [3]
|...
\- image/png
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可能想要BODY[1.2].您的示例消息属于此类型.
=在整个正文中会有很多转义.如果它是base64,你将无法用眼睛解读它.该BINARY IMAP扩展可以帮助这一点,但这不是广泛部署.
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |