2011-02-11 66 views
0

我正在研究IMAP,因此只需讀取正文(body [header.fields(DATE FROM SUBJECT)])我正在傳遞此命令。通過IMAP字符串讀取問題

但問題是有一段時間我的字符串返回額外的東西excetp從我原來的字符串。 有時我得到的字符串的有限部分意味着身體的一半。因此,無論何時我通過第二個命令,它都將接受作爲第一個命令並返回結果作爲第一個待命結果的命令。

所以我擔心的是,我無法檢索正文部分的正確數據。

根據我的知識我認爲這是由於互聯網datapacket tresfersize,但除了這種看outlook或任何其他郵件管理器將正常工作,這是什麼這是 這個數據retristing的機制。

或其他任何東西做FO我的編碼.....

謝謝..

+0

您可以使用現有的IMAP庫嗎?這比編寫你自己的要容易得多。如果沒有,您是否可以發佈包含「額外內容」的IMAP服務器的示例響應?你連接到哪個IMAP服務器進行測試? – dkarp 2011-02-11 15:19:52

回答

1

發佈從包含「額外的東西」 IMAP服務器的響應示例會有所幫助。

您最可能面臨的問題是未標記的服務器響應。

繼承人什麼RFC3501說:

狀態響應可以被標記或未標記。標記的狀態響應指示完成結果的客戶端命令(OK,NO,或者BAD狀態),並有一個標籤相匹配的命令:

C: a002 NOOP 
S: a002 OK NOOP completed 

一些狀態響應,所有服務器數據,均未標記。一個 未標記的響應由標記「*」而不是標記指示。

C: a047 NOOP 
S: * 22 EXPUNGE 
S: * 23 EXISTS 
S: * 3 RECENT 
S: * 14 FETCH (FLAGS (\Seen \Deleted)) 
S: a047 OK NOOP completed 

所以你需要區分這兩種響應類型。

請記住,檢查是否每一個接收到線,從「*」字符開始是不夠的,因爲你的電子郵件也可能來自恆星字符開始行:

C: a004 fetch 12 body[header] 
S: * 12 FETCH (RFC822 {342} 
S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) 
S: From: Terry Gray <[email protected]> 
S: Subject: IMAP4rev1 WG mtg summary and minutes 
S: MIME-Version: 1.0 
S:  
S: * This is email body containing start char 
S: ) 
S: a004 OK FETCH completed 

{342}是的確切數目你應該閱讀的字節。

底線是不要重新發明車輪使用現有的庫。

你可以看看我的IMAP component(不是免費的)。

+0

感謝pawel我選擇了文件夾命令後使用了NOOP,但仍然沒有解決問題。如果你提供了一些例子,那麼我會感謝你.. – 2011-02-14 10:37:49