Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Outlook发送多个附件,成功但失败_C#_Outlook - Fatal编程技术网

C# 使用Outlook发送多个附件,成功但失败

C# 使用Outlook发送多个附件,成功但失败,c#,outlook,C#,Outlook,以下代码用于创建电子邮件并附加一个或多个附件。到目前为止,代码成功地做到了这一点,但它也创建了等量的电子邮件,每个电子邮件中都有适当数量的附件。也就是说,它创建了三封电子邮件,每封邮件中都有三个附件 private void SendMail(List<string> paths) { DateTime defDt = DateTime.Now.AddMinutes(3); Microsoft.Office.Intero

以下代码用于创建电子邮件并附加一个或多个附件。到目前为止,代码成功地做到了这一点,但它也创建了等量的电子邮件,每个电子邮件中都有适当数量的附件。也就是说,它创建了三封电子邮件,每封邮件中都有三个附件

private void SendMail(List<string> paths)
        {
            DateTime defDt = DateTime.Now.AddMinutes(3);
            Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
            Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            mailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;

            mailItem.GetInspector.Activate();
            var signature = mailItem.HTMLBody;
            mailItem.HTMLBody = signature;
            foreach (string u in paths)
            {
                mailItem.Attachments.Add(u);
            }
            mailItem.DeferredDeliveryTime = defDt;
            mailItem.Display(mailItem);

        }
private void SendMail(列出路径)
{
DateTime defDt=DateTime.Now.AddMinutes(3);
Microsoft.Office.Interop.Outlook.Application app=新的Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem MailItem=app.CreateItem(Microsoft.Office.Interop.Outlook.OlimType.olMailItem);
mailItem.BodyFormat=Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
mailItem.GetInspector.Activate();
var signature=mailItem.HTMLBody;
mailItem.HTMLBody=签名;
foreach(路径中的字符串u)
{
mailItem.Attachments.Add(u);
}
mailItem.DeferredDeliveryTime=defDt;
mailItem.Display(mailItem);
}

为什么会这样?除了用于添加多个附件的foreach循环之外,没有foreach循环。当使用一个附件触发时,错误不会显示(可能是因为我只创建了一封带有一个附件的电子邮件)。这个伟大的社区有什么想法吗?

在代码前面的foreach循环中调用了该代码。显示的代码按预期工作。

如果注释掉整个
foreach
循环,会发生什么?还有,你有没有试过一行一行地走过去?这个代码有没有可能被任何人多次调用?谢谢!没有在代码中尽早检查,并且它在foreach循环中被cougt调用,så出现的代码不是问题:)