Tcl IMAP:检测邮件中是否存在附件的最佳方法

Tcl IMAP:检测邮件中是否存在附件的最佳方法,tcl,imap,Tcl,Imap,我正在尝试使用IMAP在Tcl/Tk中编写邮件客户端。 连接到邮件服务器并选择文件夹后,我检索了“from:”到“subject:”字段,但我也想知道电子邮件是否有附件。根据RFC3501,通过查询正文或正文结构,可以获得电子邮件的“体系结构”。但是破译BODY/BODYSTRUCTURE很困难(例如,没有图像的简单HTML消息看起来像是多部分消息) 有没有一种快速的方法可以知道邮件是否有附件?或者我应该在身体/身体结构中寻找什么来知道是否存在附件 提前谢谢! 卢克 PS:通过获取整个正文(fe

我正在尝试使用IMAP在Tcl/Tk中编写邮件客户端。 连接到邮件服务器并选择文件夹后,我检索了“from:”到“subject:”字段,但我也想知道电子邮件是否有附件。根据RFC3501,通过查询正文或正文结构,可以获得电子邮件的“体系结构”。但是破译BODY/BODYSTRUCTURE很困难(例如,没有图像的简单HTML消息看起来像是多部分消息)

有没有一种快速的方法可以知道邮件是否有附件?或者我应该在身体/身体结构中寻找什么来知道是否存在附件

提前谢谢! 卢克


PS:通过获取整个正文(fetchuidbody[])并使用MIME,我可以提取附件。在这里,我正在寻找一种方法,在不获取整个身体的情况下知道是否存在附件。

解析身体结构,并测试每个身体部位。如果其内容类型为多部分,则它不是附件。如果它的内容类型是文本,那么您必须查看它的内容配置,它可能是
内联的
附件
。如果它有另一个内容类型,则它是一个附件

:

((“文本”“普通”(“字符集”“US-ASCII”)NIL NIL“7BIT”1152
23)(“文本”“普通”(“字符集”“US-ASCII”“名称”“cc.diff”)
“”“编译器差异”
“BASE64”455473“混合”)

正如您所看到的,有一个顶级多部分(外部parens,“mixed”)。这不是附件,因为它的类型是“多部分”。multipart/mixed包含两个部分,均为“text”类型和nil内容配置,因此这两个部分也不是附件。

您在获取附件方面是否遇到了特定问题,或者只是不知道如何处理?
     (("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 1152
     23)("TEXT" "PLAIN" ("CHARSET" "US-ASCII" "NAME" "cc.diff")
     "<960723163407.20117h@cac.washington.edu>" "Compiler diff"
     "BASE64" 4554 73) "MIXED")