2011-07-21 79 views
2

我想通過使用Lumisoft庫的.NET C#中的IMAP協議保存附件。問題是該文件已下載並可保存,但文件大小爲0B。Lumisoft IMAP附件保存0字節

附件取自IMAP_Fetch_DataItem_Rfc822()。可變mail是從信息流解析:var mail = Mail_Message.ParseFromStream(stream);

foreach (var att in mail.Attachments) 
{ 
    if (att.ContentType.Type == "image") 
    { 
    try 
    { 
     var fPath = Path.Combine(dirPath, att.ContentType.Param_Name); 
     if (!File.Exists(fPath)) 
     { 
     Stream data = ((MIME_b_SinglepartBase)att.Body).GetDataStream(); 

     using (FileStream fs = File.Create(fPath)) 
     { 
      LumiSoft.Net.Net_Utils.StreamCopy(data, fs, 4096); 
     } 
    } 
    Console.WriteLine("Storing image attachment into: " + fPath); 

... 
+0

你的意思'LumiSoft.Net.Net_Utils.StreamCopy (數據,fs,4096);'?因爲你現在正在寫'ms'。 –

+0

是的,我正在嘗試使用MemoryStream並忘記回滾更改。 – waxi

+0

有人嗎?請... – waxi

回答

0

看來,Lumisoft分析器沒有正確解碼附件。 您確定下載後的附件大小是否大於零?

LumiSoft不幸的是,漂亮的馬車,你可以考慮使用商業替代品, 這裏是我的產品:http://www.lesnikowski.com/mail/

+0

當我調試時,我可以看到包括圖片大小的所有元數據。有趣的是,這已經在過去。經過一週的測試,我被迫遷移到MailSystem.NET庫。這一個它的工作,但是該死的很慢。 – waxi

1

您需要關閉Stream data

Stream data = ((MIME_b_SinglepartBase)att.Body).GetDataStream(); 
using (FileStream fs = File.Create(fPath)) 
{ 
     LumiSoft.Net.Net_Utils.StreamCopy(data, fs, 4096); 
} 
data.Close(); // missing close 
...