2

我正在尝试使用 Lumisoft 库在 .NET c# 中通过 IMAP 协议保存附件。问题是文件已下载并可以保存,但文件大小为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);

 ...
4

2 回答 2

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
...
于 2012-04-18T14:22:22.173 回答
0

Lumisoft 解析器似乎没有正确解码附件。您确定下载后的附件大小大于零吗?

不幸的是 LumiSoft 有很多错误,你可以考虑使用商业替代品,这是我的产品: http: //www.lesnikowski.com/mail/

于 2011-07-24T08:38:32.207 回答