我正在尝试使用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);
...
答案 0 :(得分: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
...
答案 1 :(得分:0)
似乎Lumisoft解析器没有正确解码附件。 您确定下载后的附件大小是否为零?
LumiSoft不幸的是很漂亮,您可以考虑使用商业替代品, 这是我的产品:http://www.lesnikowski.com/mail/