C# ';无法创建文件';尝试使用outllook从asp.net windows应用程序发送带有图像的电子邮件时出错

C# ';无法创建文件';尝试使用outllook从asp.net windows应用程序发送带有图像的电子邮件时出错,c#,asp.net,outlook,C#,Asp.net,Outlook,我正在尝试使用Microsoft.Office.Interop.Outlook从.net windows应用程序发送电子邮件。邮件是html格式的,并嵌入了一个图像。尝试附加图像时出现以下错误 无法创建文件:XXX.jpg。右键单击要在其中创建文件的文件夹,然后单击快捷菜单上的“属性”检查您对该文件夹的权限 我对文件夹访问没有任何问题。我正在64位计算机上运行应用程序,上面有32位outlook。当我不嵌入图像,我不会得到任何错误,它工作正常 string body = string.Empty

我正在尝试使用Microsoft.Office.Interop.Outlook从.net windows应用程序发送电子邮件。邮件是html格式的,并嵌入了一个图像。尝试附加图像时出现以下错误

无法创建文件:XXX.jpg。右键单击要在其中创建文件的文件夹,然后单击快捷菜单上的“属性”检查您对该文件夹的权限

我对文件夹访问没有任何问题。我正在64位计算机上运行应用程序,上面有32位outlook。当我不嵌入图像,我不会得到任何错误,它工作正常

string body = string.Empty;
using(StreamReader reader = new StreamReader(Environment.CurrentDirectory + @"/Mail Templates/XXX.txt"))
        {
            body = reader.ReadToEnd();
        }

        Outlook.Application oApp = new Outlook.Application();
        Outlook._MailItem mailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

        mailItem.To = "XXX";
        string filename = Environment.CurrentDirectory + @"/Mail Templates/XXX.jpg";
        mailItem.Attachments.Add(filename, (int)Outlook.OlAttachmentType.olEmbeddeditem, 1);
        mailItem.HTMLbody = "true"
        mailItem.Display(true);

Microsoft目前不建议也不支持从任何无人参与、非交互的客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行时可能会表现出不稳定的行为和/或死锁。

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将面临整体解决方案稳定性方面的风险

你可以在这篇文章中了解更多


您可以考虑使用EWS(Exchange Web Services)或Bcl(来自.NETFramework的基类库)。有关详细信息,请参阅。

您不应在ASP.NET上使用Office Interop。坏事会发生的。微软说。相反,您应该通过SMTP或使用Exchange Web服务发送电子邮件。但我的要求是这样的。我正在开发一个自动化系统,邮件在发送之前应该经过审核。还有其他选择吗?我的要求是在发送之前查看电子邮件。还有其他方法吗?我想说的是,我的是windows桌面应用程序