Подтвердить что ты не робот

Как подключиться к Outlook 2010 во время работы в С#?

То, что я пытаюсь сделать, это добавить кнопку "Email To..." к клиенту winform, который открывает новое почтовое окно Outlook и прикрепляет файл, чтобы пользователь мог его переслать. Я могу заставить интеграцию Outlook работать нормально, если Outlook еще не запущен. Это приложение winforms С#.NET 4.0, использующее библиотеку взаимодействия Outlook 14.0, против 32-битной версии Outlook 2010 на 64-битной машине Windows 7. У меня есть приложение, уже скомпилированное для x86 по другим причинам, поэтому я сомневаюсь в его проблеме с 32/64 бит. Вот мой код:

// Connect to outlook and create a new mail item
var app = new Outlook.Application();
var ns = app.GetNamespace("MAPI");
var mailItem = (Outlook.MailItem)ns.Application.CreateItem(Outlook.OlItemType.olMailItem);

// create the mail item and attach the file
mailItem.To = "";
mailItem.Subject = "Emailing: " + Path.GetFileName(_currentFilePath);
mailItem.Attachments.Add(_currentFilePath, Outlook.OlAttachmentType.olEmbeddeditem);

// show the email dialog window
mailItem.Display(true);

Если Outlook не работает, он работает безупречно. После его открытия я получаю следующую ошибку в первой строке, где он пытается создать объект Outlook.Application:

Получение класса COM factory для компонент с CLSID {0006F03A-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80080005 Ошибка выполнения сервера (Исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

Любые идеи, что может вызвать это? Это конфликт какой-то версии?

4b9b3361

Ответ 1

Это связано с привилегиями процесса. Я обычно запускаю Visual Studio как администратор, но если Outlook не запускается ранее, а также admin, COM-вызов завершится неудачно.

Простое решение. Запускать как администратор, либо запускать оба как обычный уровень привилегий.

Ответ 2

У меня была та же проблема. Это проблема безопасности. Когда вы запускаете Outlook как администратор (Shift Right Click). Проблема больше не существует. Отключение настройки управления учетными записями пользователей может решить ее.