Загрузить имена файлов вложений без вложений в С#

Во-первых, извините за мой английский.

Я хотел бы отобразить список файлов с именами вложений в почтовом ящике. Затем из этого списка пользователи смогут выбрать, какие вложения они хотят загрузить на жесткий диск - например, такие как в этой программе: http://www.mailresender.com.ar/Read.html

Я уже написал это в Koolwired.Imap:

for (int i = 0; i < mbStructure.BodyParts.Count; i++) // i = number of parts of body
{
     if (mbStructure.BodyParts[i].Attachment)
     {
         mbStructure = command.FetchBodyPart(mbStructure, i);
         System.Console.WriteLine(mbStructure.BodyParts[i].Disposition); // Disposition contains file name
         //System.Console.WriteLine(mbStructure.BodyParts[i].Data); //  Data contains entire file
      }
}

но проблема в том, что в память загружается не только имя файла, но и бинарные данные (весь вложенный файл загружается методом FetchBodyPart) - поэтому, если файлы во вложении имеют большой размер (например, 20 МБ), все эти 20 МБ тоже надо загрузить в память, так что отображение списка имен файлов будет продолжаться очень-очень долго.

Есть ли способ загрузить только имена файлов вложений без файлов? Какая библиотека в С# может это поддерживать?


person R_K    schedule 24.08.2011    source источник


Ответы (1)


Ответ на ваш вопрос: ImapCommand.FetchBodyStructure, но, просматривая исходный код, могу поспорить, что в некоторых сообщениях он не работает.

Вы также можете взглянуть на компонент IMAP Mail.dll, особенно этот пост в блоге может быть полезен:

http://www.lesnikowski.com/blog/index.php/get-email-information-from-imap-fast/

Обратите внимание, что Mail.dll — это коммерческий продукт, который я создал.

person Pawel Lesnikowski    schedule 29.08.2011