2011-07-21 45 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 
...