2011-07-21 17 views
2

Lumisoftライブラリを使用して、.NET c#でIMAPプロトコル経由で添付ファイルを保存しようとしています。問題は、ファイルがダウンロードされて保存できることですが、ファイルサイズは0Bです。Lumisoft IMAP attachment saved 0 bytes

添付ファイルをIMAP_Fetch_DataItem_Rfc822()で取得します。 Lumisoftパーサが正しく添付ファイルをデコードしていないようだ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

:変数mailは、ストリームから解析されたメッセージです。 ダウンロード後の添付ファイルのサイズがゼロ以上になっていませんか?

LumiSoftは残念ながらかなりバグがある、あなたは、 を商用代替手段を使用することを検討してここに私の製品です:あなたがStream data閉じる必要がhttp://www.lesnikowski.com/mail/

+0

私は画像サイズを含むすべてのメタデータを見ることができますデバッグするとき。面白いことは、これはすでに過去に働いたことです。 1週間のテストの後、私はMailSystem.NETライブラリに移動することを余儀なくされました。これは動作しますが、遅いです。 – waxi

1

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 
...