繁体   English   中英

以编程方式生成Outlook电子邮件

[英]Programmatically generate Outlook email

我在asp.net c#中创建一个按钮,单击该按钮将打开Outlook窗口。

我引用了Microsoft.Office.Interop.Outlook dll,并在using语句中使用了它:

using Outlook = Microsoft.Office.Interop.Outlook;

这是代码。

        private void CreateMailItem()            
        {
            try

            {
                var outlookApp = new Outlook.Application();

                var mailItem = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);

                //var mailItem = (Outlook.MailItem)
                //    Application.CreateItem(Outlook.OlItemType.olMailItem);
                mailItem.Subject = "This is the subject";
                mailItem.To = "someone@example.com";
                mailItem.Body = "This is the message.";
                mailItem.Importance = Outlook.OlImportance.olImportanceLow;
                mailItem.Display(false);
            }
            catch (Exception)
            {

                throw;
            }           
        }

我在第一行出现错误, var outlookApp = new Outlook.Application(); 异常说明:

{“由于以下错误,为具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件检索COM类工厂失败:80070005访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))。”}

如果未正确安装引用的dll或此dll的依赖项,则会引发您发布的异常。

在这种情况下,看来Outlook或Office在您的测试计算机上使用的不是您所引用的正确版本?

无法将此内容发布为评论。

我想知道为什么您更喜欢使用Outlook Interop? 如果我希望程序在用户当前的电子邮件客户端上发送电子邮件,尽管我在WinForms上使用它,但我正在使用mailto://协议。

http://www.rapidtables.com/web/html/mailto.htm

就像任何Office应用程序一样,不能从服务(例如IIS)中使用Outlook。 即使您确实做到了,新的消息窗口也会显示在服务器上,用户无论如何也看不到它。

您可以尝试运行客户端 JavaScritp代码,但是仅限于IE,需要在本地安装Outlook,并且必须信任您的站点才能在脚本中创建COM对象。

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

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件。 或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。 如果您从服务器端解决方案中使用Office应用程序,则该应用程序将缺少许多成功运行所需的功能。 此外,您将承担整体解决方案稳定性的风险。 在《 服务器端Office自动化注意事项》一文中了解有关此内容的更多信息。

考虑使用System.Net.Mail命名空间在ASP.NET中创建和发送电子邮件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM