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

时间:2015-02-06 12:53:00

标签: tcl imap

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

是否有快速了解邮件是否附件的方法?或者我应该在BODY / BODYSTRUCTURE中查找是否存在附件?

提前致谢! LUC

PS:通过获取整个身体(FETCH uid BODY [])并使用MIME,我可以提取附件。在这里,我正在寻找一种方法来了解是否有一个附件没有取出整个身体。

1 个答案:

答案 0 :(得分:1)

解析BODYSTRUCTURE并测试每个身体部位。如果其内容类型是多部分,则它不是附件。如果其内容类型是文字,那么您必须查看其内容处置,可以是inlineattachment。如果它有另一种内容类型,则它是附件。

RFC3501 gives the following example

     (("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")

正如你所看到的,有一个顶层的多部分(外部的“parens”,“混合”)。这不是附件,因为它的类型是“multipart”。 multipart / mixed包含两个部分,都有“text”和nil content-disposition类型,因此这两个部分也不是附件。