Требование: в моем приложении есть требование отправлять электронные письма через Outlook. Я мог бы сделать это с помощью Outlook = Microsoft.Office.Interop.Outlook;
Приложение отлично работает в среде разработки, но я получаю исключение: System.Runtime.InteropServices.COMException (0x80040154): получение фабрики классов COM для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSN ))
Подробно:
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at InvoiceSearchTool.Controllers.emailController.CreateMessageWithAttachment(String invoiceNumber, String recipient, String messageBody) in C:\Projects\KeleInvoice\InvoiceSearchTool\Controllers\emailController.cs:line 38
У меня не установлен Outlook на сервере приложений. Нужно ли мне устанавливать Outlook на сервере? или исключение по какой-то другой причине? как от этого избавиться?
CLSID для Outlook: {0006F03A-0000-0000-C000-000000000046}. Как следует из кода ошибки, он не может найти класс. Вам нужно будет установить Outlook (та же версия, что и у вас при разработке, должна быть установлена на сервере приложений).
(ps - отметьте, пожалуйста, если я прав, спасибо!)