在c#中加载没有附件的附件文件名

时间:2011-08-24 11:49:25

标签: c# imap attachment

首先,对不起我的英语。

我想在邮箱上显示附件名称文件列表。然后,从该列表中,用户可以选择要在hdd上下载哪些附件 - 例如,在此程序中: 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 MB)所有这20个MB也必须加载到内存中,因此显示文件名列表将持续很长时间。

有没有办法只加载没有文件的附件文件名? c#中的哪个库可以支持这个?

1 个答案:

答案 0 :(得分:0)

您的问题的答案是 ImapCommand.FetchBodyStructure ,但是当我浏览源代码时,我打赌它会在某些电子邮件中失败。

您还可以查看Mail.dll IMAP component,特别是此博文可能有用:

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

请注意,Mail.dll是我创建的商业产品。