我正在尝试从服务器端撰写电子邮件。我安装了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);
答案 0 :(得分:0)
Outlook,就像任何其他Office应用程序一样,不能在服务(例如IIS)中使用。即使您使其正常工作,电子邮件也会显示在服务器上,用户将无法看到它并与之互动。
你可以:
在网页上使用mailto url。
如果是IE,您可以在客户端脚本中使用Outlook对象模型,但必须信任您的站点才能执行此操作。
在服务器端,如果用户使用EWS,则可以使用EWS连接到Exchange Server。但您需要知道用户名和密码。
创建一个EML文件(它是基于文本的)并让用户打开它 - Outlook(本地)将很乐意显示邮件正文(包含HTML)和任何图像/附件。要确保Outlook在撰写模式下打开EML领域,请包含" X-Unsent" MIME标头,其值为1.