MailKit不能下载所有附件吗?

时间:2018-06-19 19:51:34

标签: c# .net-core mailkit

我在.NET Core 2中开发了一项工作,该工作使用MailKit在特定的电子邮件中收集.xml的附件。代码如下:

public List<string> GetXmls()
{
    // ...
    // ...
    // ...

    for (int nEmail = 0; nEmail < exchange.Count; nEmail++)
    {
        try
        {
            var mensagem = exchange.GetMessage(nEmail);

            foreach (MimePart attachment in mensagem.Attachments)
            {
                if (attachment.FileName.ToLower().EndsWith(".xml", StringComparison.Ordinal))
                {
                    try
                    {
                        xmlPaths.Add(DownloadXml(attachment));
                    }
                    catch (Exception ex)
                    {
                        Log.Aviso(ex);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Log.Error(ex);
        }
    }

    return xmlPaths;
}

public string DownloadXml(MimePart attachment)
{
    var path = Path.Combine(@"", $"Attachments\\xml_{DateTime.Now.ToString(_formatoData)}.xml");

    using (var memoryStream = new MemoryStream())
    {
        attachment.Content.DecodeTo(memoryStream);

        using (var stream = File.Create(path))
        {
            using (var binaryWriter = new BinaryWriter(stream))
            {
                binaryWriter.Write(memoryStream.ToArray());

                Log.Debug($"Attachment {attachment.FileName} - Downloaded with success");
            }
        }
    }

    return path;
}

该代码在我的计算机上正常运行,我发送了两封电子邮件,共77个xml,并且该代码下载了所有xml。但是,当我尝试在服务器上运行.exe时,作业仅下载了一些xml。我运行了几次,有时作业下载了20 xml,有时是25、27,这是断断续续的。

最奇怪的是,在我运行该工作的所有时间里,该日志打印了77次“成功下载”日志,并且没有引发任何异常。

我在5台计算机上进行了测试,其中2台正常工作(我的,安装了.NET Core SDK,而我朋友的PC,没有安装.NET Core SDK,都是Win 10 x64),其他3台都解决了此问题(1台PC Win7 x64和另外两个是Windows Server 2008 R2,所有这些都未安装.NET Core SDK。

我发布作业的方式是.net cli: dotnet发布-c版本-r win7-x64-自包含

抱歉,我的英语不好,巴西人在这里! :)

0 个答案:

没有答案