我正在开发一个使用outlook发送电子邮件的Windows应用程序。我在我的应用程序中引用了以下Dll。 Microsoft.Office.Core,Microsoft.Office.Interop.Outlook,Microsoft.Office.Tools.Outlook ,, Microsoft.Office.Tools.Outlook.v40.Utilities。
我有以下代码
Outlook.Application app = new Outlook.Application();
Outlook.MailItem newMail =
(Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem);
创建Outlook应用程序和MailItem对象。
当我在安装了Outlook的本地计算机上运行此应用程序时,我发现邮件的发送没有任何问题。
但是当我在未安装Outlook的生产计算机上部署此应用程序时,发送的电子邮件失败,但出现以下异常。
错误:无法发送邮件:由于以下错误,检索CLSID为{0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG) )。
我是否需要在生产机器上注册任何dll才能使其正常工作?或者我是否需要在生产机器上安装Outlook?
如果我需要注册任何dll或COM对象,那么使用安装项目在生产机器上执行此操作的步骤是什么。
答案 0 :(得分:0)
Interop dll就是这样:它们允许.NET代码通过在.NET和COM对象之间进行转换来调用COM对象。您需要安装完整的Outlook客户端(Office许可证不允许安装某些dll,即使您可以找出所需的那些,以及所有需要的那些等等。)
在我工作的一家公司,他们不允许在服务器上安装Office应用程序(这可能也是由于许可限制)。如果是这种情况,那么最好的办法是通过SMTP从.Net发送电子邮件。