【问题标题】:IMAP: best way to detect the presence of an attachment in a messageIMAP:检测邮件中是否存在附件的最佳方法
【发布时间】:2015-04-06 14:57:53
【问题描述】:

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

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

提前致谢! 卢克

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

【问题讨论】:

  • 您是否在获取附件时遇到了特定问题,或者您只是迷失了如何去做?

标签: tcl imap


【解决方案1】:

解析 BODYSTRUCTURE 并测试每个身体部位。如果其内容类型是多部分的,则它不是附件。如果它的 content-type 是 text,那么你必须查看它的 content-disposition,它可能是 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")

如您所见,有一个顶级多部分(外部括号,“混合”)。这不是附件,因为它的类型是“多部分”。 multipart/mixed 包含两个部分,类型为“text”和 nil content-disposition,因此这两个部分也不是附件。

【讨论】:

    猜你喜欢
    • 2017-11-03
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多