Вложение Lumisoft IMAP сохранено 0 байт - PullRequest
2 голосов
/ 21 июля 2011

Я пытаюсь сохранить вложение по протоколу IMAP в .NET c #, используя библиотеку Lumisoft. Проблема в том, что файл загружен и может быть сохранен, но его размер составляет 0B.

Приложение загружено 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);

 ...

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

Вам нужно закрыть 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
...
0 голосов
/ 24 июля 2011

Похоже, что парсер Lumisoft неправильно декодировал вложение. Вы уверены, что размер вложения после загрузки больше нуля?

LumiSoft, к сожалению, довольно глючный, вы можете рассмотреть возможность использования коммерческой альтернативы, вот мой продукт: http://www.lesnikowski.com/mail/

...