在嘗試了很多IMAP API之後,我決定編寫自己的(大多數是內存管理器,有些只是不工作,內存不足等等等等)。C#IMAP客戶端 - 與郵件服務器的多個連接
無論如何,我已經寫了一些工作(使用TCPClient對象)的代碼,迄今爲止它的良好。但是,我希望我的一個能夠處理對郵件服務器的多個請求。例如: 假設我得到了所有UID的列表,然後循環查看每個消息的列表,獲得我想要的內容(正文,標題等)。
問題是,我將如何處理多個請求?因此,我一次只能處理10個UID,而不是每次循環處理10個UID。
這裏最好的方法是什麼?一組TCP客戶端,每個都有自己的線程?
謝謝。
哇謝謝你這樣一個真棒迴應。我用來加速處理郵件的一種技術是使用它們生成關鍵字,因此我可以在獲取郵件後立即處理郵件,然後從那裏我可以進行線程操作。另外,我注意到即使我沒有要求服務器,服務器也會向我發送命令!例如,如果在我正在處理的過程中添加新郵件,則會向我發送更新。 – Umair
還有一件事,我使用StreamReader從網絡流中讀取響應。由於郵件服務器可以在沒有我要求的情況下向我發送回覆,因此是逐行讀取回復並確保它是我想要的最佳方法? (我問這是因爲在某些情況下,我使用StreamReader.Read()讀取響應中的字符數時會讀取大塊數據,但是這可能會被污染否?希望這是有道理的......) – Umair
這很棘手得到正確的。問題在於服務器不會準確地指出與您的命令有關的響應的起始位置。我一直使用的方法是不要試圖做到這一點。如果你跟蹤你所處的狀態,選擇哪個郵箱等等,那麼你得到的迴應往往只有一種方式。因此,試圖弄清楚哪些行與命令的結果有關,通常是不必要的。 –