编程生成Outlook电子邮件
本文关键字:电子邮件 Outlook 编程 | 更新日期: 2023-09-27 18:09:07
我正在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拒绝访问。(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))。"}
当引用的dll或此dll的依赖项未正确安装时,您发布的异常将被抛出。
在这种情况下,似乎outlook或office没有使用您引用的正确版本,在您的测试机器上?
不能作为评论发布
我想知道你为什么更喜欢使用Outlook Interop?如果我想让我的程序在用户当前的电子邮件客户端上发送电子邮件,我使用mailto://协议,尽管我在WinForms上使用它。
像http://www.rapidtables.com/web/html/mailto.htmOutlook,就像任何Office应用程序一样,不能从服务(如IIS)中使用。即使你使它工作,新的消息窗口将显示在服务器上,用户无论如何也不会看到它。
你可以试着运行一个客户端 javascript代码,但是你只能使用IE浏览器,Outlook需要在本地安装,而且你的站点必须被信任才能在脚本中创建COM对象。
微软目前不建议,也不支持,从任何无人值守的、非交互式的客户端应用程序或组件(包括ASP、ASP、ASP、ASP和ASP. xml)自动化Microsoft Office应用程序。. NET、DCOM和NT服务),因为在此环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁。
如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用那些对于无人值守执行是安全的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果从服务器端解决方案使用Office应用程序,则该应用程序将缺乏成功运行所需的许多功能。此外,您将在整个解决方案的稳定性方面承担风险。请参阅Office服务器端自动化的注意事项一文了解更多信息。
考虑在ASP.NET中使用System.Net.Mail命名空间创建和发送电子邮件。