编写电子邮件时webServer中的Outlook错误

时间:2016-12-28 23:44:53

标签: c# outlook

我正在尝试从服务器端撰写电子邮件。我安装了Microsoft.office.core和Microsoft.Office.Interop.outlook参考 我正在使用下面的代码。 此代码适用于本地计算机中的新电子邮件(outlook)。但当我尝试将我的网站发布到开发/测试服务器时,这段代码不起作用,无论我在两台服务器上都安装了Outlook,我都会收到此错误

System.UnauthorizedAccessException: 
Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

如何解决它。任何帮助都很好。谢谢你提前

 Outlook.Application outlookApp = new Outlook.Application();
 Outlook.MailItem mailItem = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
 mailItem.Subject = "Notice to Proceed MnDOT Contract Number: " + CntrctID;
 mailItem.To = lstCntrctContractorContact[0].CNTRCTR_PROJ_Email;
 mailItem.CC = CntrctContactInfo.MnDot_EMAIL;
 mailItem.HTMLBody = EmailBodyMsg.ToString();
 mailItem.Display(false);

1 个答案:

答案 0 :(得分:0)

Outlook,就像任何其他Office应用程序一样,不能在服务(例如IIS)中使用。即使您使其正常工作,电子邮件也会显示在服务器上,用户将无法看到它并与之互动。

你可以:

  1. 在网页上使用mailto url。

  2. 如果是IE,您可以在客户端脚本中使用Outlook对象模型,但必须信任您的站点才能执行此操作。

  3. 在服务器端,如果用户使用EWS,则可以使用EWS连接到Exchange Server。但您需要知道用户名和密码。

  4. 创建一个EML文件(它是基于文本的)并让用户打开它 - Outlook(本地)将很乐意显示邮件正文(包含HTML)和任何图像/附件。要确保Outlook在撰写模式下打开EML领域,请包含" X-Unsent" MIME标头,其值为1.