2015-02-06 90 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」。多部分/混合部分包含兩部分,兩部分都帶有「文本」類型和零內容配置,所以這兩部分也不是附件。

相關問題