2011-10-03 30 views
0

我有一個關於FETCH ... BODY [...]命令的查詢。IMAP正文命令。如何獲得正文的文本或html部分?

什麼是剛剛獲得身體的文本或HTML部分的最佳方式是什麼?我認爲BODY [TEXT]命令會執行此操作,但它也會返回附件等,嚴重影響性能。

目前,這是我做的(C#代碼):

 if (contentType != null) 
     { 
      switch (contentType.ToLower()) 
      { 
       case "multipart/alternative": 
       case "text/plain": 
       case "text/html": 
        body = " BODY[1]"; 
        break; 
       case "multipart/related": 
       case "multipart/signed": 
        body = " BODY[1.1]"; 
        break; 
       case "multipart/report": 
        body = " BODY[1]"; 
        break; 
       case "multipart/mixed": 
        if (mail.MailBody.TextBodyPartCount == 1) 
         body = " BODY[1]"; 
        else if (mail.MailBody.TextBodyPartCount == 2) 
        { 
         if (bodyType == BodyType.Plain) 
          body = " BODY[1.1]"; 
         else 
          body = " BODY[1.2]"; 
        } 
        else 
         body = " BODY[1]"; 
        break; 
       default: 
        body = " BODY[1]"; 
        break; 
      } 
     } 
     else 
     { 
      body = " BODY[1]"; 
     } 

這工作的大部分時間,但在某些情況下,它會返回NIL。對不起,如果我留下了任何細節,但請不要問!

謝謝。

回答

1

電子郵件消息以MIME格式存儲 - 它允許創建無限深度的樹結構。 您不能通過僅檢查內容類型來假設此樹結構的外觀。

您應該使用BODYSTRUCTURE重新創建樹結構而不下載消息,之後您可以決定需要獲取哪些部分。

+0

感謝您的回覆。但我該怎麼做?我如何獲取特定的身體部位? – Umair

+0

@Umair使用的BODYSTRUCTURE命令(http://tools.ietf.org/html/rfc3501)您也可以嘗試Mail.dll:http://www.lesnikowski.com/mail/ –