2015-02-06 91 views
1

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

有没有一种快速的方法来知道消息是否有附件?或者我应该在BODY/BODYSTRUCTURE中寻找什么来了解附件是否存在?

在此先感谢! Luc

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

+0

您是否遇到了获取附件的特定问题,或者您刚刚失去了如何做到这一点? – 2015-02-06 12:59:52

回答

1

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

RFC3501 gives the following example

 (("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 1152 
    23)("TEXT" "PLAIN" ("CHARSET" "US-ASCII" "NAME" "cc.diff") 
    "<[email protected]>" "Compiler diff" 
    "BASE64" 4554 73) "MIXED") 

正如你可以看到,有一个顶层多(外括号, “混合”)。这不是附件,因为它的类型是“multipart”。多部分/混合部分包含两部分,两部分都带有“文本”类型和零内容配置,所以这两部分也不是附件。

相关问题