我試圖拉MIME格式多部分郵件在2010年德爾福使用印10.5.5這些是我遇到的麻煩的代碼行的IMAP服務器都低於,我在那裏instatiate的curMessage對象,檢索消息到它,然後調用CountParts:TIdMessageParts.CountParts返回0
var
curMessage: TIdMessage;
IMAP4: TIdIMAP4;
msgIndex: Integer;
begin
...
curMessage := TIdMessage.Create(nil);
IMAP4.Retrieve(msgIndex, curMessage);
curMessage.MessageParts.CountParts;
//code that checks counts
//and
end;
我然後有一些代碼,檢查curMessage.MessageParts(即TextPartCount)的各個計數特性。然而,CountPart過程不返回任何東西,因爲Count
財產的程序塊引用爲0,即使我已經驗證該消息被檢索並放入curMessage。
我注意到的一件事,還沒有到底,還是IsMsgSinglePartMime回來了,儘管服務器上的所有消息都有Content-Type: multipart/mixed;
。
任何幫助將非常感激。
我在這裏錯過了什麼?如果需要,我可以提供更多的代碼,
謝謝,這有很大的幫助。有一個可處理的邊界,今天上午的一些進一步測試表明,一些消息正在被正確處理。只是發生在我正在處理的文件夾中的前幾條消息都有同樣的問題。 我在導致問題的消息的標題中發現了換行符。 IdMessageClient.ReceiveHeader僅在換行符之前返回標題的行。我不確定這是否在後來的Indy版本中處理得更好,但聽起來像IMAP具有POP不一致的一致性問題,也許我只是遇到了這些問題。 – MCP
電子郵件標題和正文內容是由一個空行(更精確地,通過一個'CRLF + CRLF'序列,儘管印還支持'LF + LF','CRLF + LF'和'LF + CRLF')分離。如果標題有額外的錯誤換行符,那麼Indy(或任何其他電子郵件解析器)都無法做到這一點。這就是電子郵件的工作原理。 –