2013-07-24 88 views
-2

庫ipworks提供了一些獲取文本消息的方法。如何通過ipworks獲取文檔

在文檔中我找不到如何使用imaps通過ipworks庫讀取附件。

你能幫我嗎?謝謝

+0

你嘗試過什麼嗎? – wudzik

+0

我嘗試了方法FetchMessages()和FetchInfo()。最後MessageContentEncoding屬性爲null。 – zirbel

回答

5

我爲/ n軟件工作,我們在這裏遇到了您的問題。基於這個問題的標籤,它看起來像你可能正在使用我們的.NET版本和C#代碼,所以我將使用C#代碼作爲我的例子。

從Imaps組件檢索附件需要使用MessageParts屬性。此屬性包含下載的電子郵件中各個MIME部分的集合。通常,前兩部分將成爲電子郵件消息的HTML正文(如果適用)和電子郵件的純文本正文。任何附件都將在其餘的MIME部分中。您可以使用類似於下面的一些代碼,從選定的電子郵件檢索附件:

Imaps imap = new Imaps(); 

imap.OnSSLServerAuthentication += new Imaps.OnSSLServerAuthenticationHandler(delegate(object sender, ImapsSSLServerAuthenticationEventArgs e) 
{ 
    //Since this is a test, just accept any certificate presented. 
    e.Accept = true; 
}); 

imap.MailServer = "your.mailserver.com"; 
imap.User = "user"; 
imap.Password = "password"; 
imap.Connect(); 
imap.Mailbox = "INBOX"; 
imap.SelectMailbox(); 
imap.MessageSet = "X"; //Replace "X" with the message number/id for which you wish to retrieve attachments. 
imap.FetchMessageInfo(); 

for (int i = 0; i < imap.MessageParts.Count; i++) 
{ 
    if (imap.MessageParts[i].Filename != "") 
    { 
    //The MessagePart Filename is not an empty-string so this is an attachment 

    //Set LocalFile to the destination, in this case we are saving the attachment 
    //in the C:\Test folder with its original filename. 
    //Note: If LocalFile is set to an empty-string the attachment will be available 
    //  through the MessageText property. 
    imap.LocalFile = "C:\\Test\\" + imap.MessageParts[i].Filename; 

    //Retrieve the actual attachment and save it to the location specified in LocalFile. 
    imap.FetchMessagePart(imap.MessageParts[i].Id); 
    } 
} 

imap.Disconnect(); 

注意,它也有可能是單獨的MIME部分將被base64編碼。如果您希望讓我們的組件自動解碼這些部分,那麼您需要將「AutoDecodeParts」屬性設置爲「true」。這應該在調用FetchMessageInfo方法之前完成。請參閱下面的示例:

imap.AutoDecodeParts = true; 
imap.FetchMessageInfo(); 

電子郵件還可能包含嵌套的MIME結構。這是一個更復雜的情況,它需要遞歸方法來解構嵌套的MIME結構。我們的MIME組件(可在我們的IP * Works和IP * Works S/MIME產品中使用)對此非常有幫助。

如果您需要其他語言的示例,處理嵌套MIME結構的示例,或者如果您有任何其他問題,請隨時通過[email protected]與我們聯繫。

+0

非常感謝。我明白了。是的,它是C#。 – zirbel

相關問題