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