2013-06-14 2 views
0

У меня есть файл (btmap, называемый secretimage), который я хочу прикрепить к почте, когда пользователь нажимает кнопку. Я хотел бы использовать Outlook для этого.Присоединение файла к почте с outlook

Так вот что я сделал:

using Outlook = Microsoft.Office.Interop.Outlook; 
private void cmdSend_Click(object sender, EventArgs e) 
    { 
      Outlook.Application app = new Outlook.Application(); 
      Outlook.MailItem mail = new Outlook.MailItem(); 
      Outlook.Attachment attach = mail.Attachments.Add(secretImage, Outlook.OlAttachmentType.olByValue, 0, "Secret message"); 
    } 

Хотя это дает мне следующую ошибку:

Получение COM фабрики классов для компонента с CLSID { 00061033-0000-0000-C000 -000000000046} не удалось из-за следующей ошибки: 80040154 Klasse nicht registriert (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Последняя часть - немецкий, я не знаю, почему, на самом деле я задал язык на английском языке. «Klasse nicht registriert» переводит «Класс не зарегистрирован».

Я попытался сделать то, что рекомендуется здесь: Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154 Хотя это не сработало.

Может ли кто-нибудь помочь мне здесь? Я действительно застрял.

+0

Есть ли причина, по которой вы не используете API веб-служб Exchange? –

+0

Ну, это больше практика, и я бы хотел сделать это, если это возможно. – tomet

+0

Одна из проблем, с которыми вы столкнетесь в этом методе, заключается в том, что Outlook имеет меры безопасности, где вы должны разрешить отправке приложения от вашего имени. Он подскажет, и нет ответа на этот вопрос без использования какого-либо программного обеспечения, написанного специально для подавления этого сообщения и ответа на него. Это не идеально подходит для отправки электронных писем. Я бы предложил либо использовать веб-службы Exchange, либо разрешить машине быть SMTP и использовать пространство имен System.Net.Mail. Как всегда вы можете использовать код, который я привел ниже, чтобы сделать это, и я тестировал его, и он работает. – Bearcat9425

ответ

0

Попробуйте поменять свой элемент почты для этого кода, взятого по этой ссылке. 80040154 Class not registered ERROR in Outlook 2010 Add In

Microsoft.Office.Interop.Outlook.MailItem mail= app.CreateItem((OlItemType.olMailItem)); 

Одна из проблем, которые вы собираетесь работать в с помощью этого метода является то, что перспективы имеют меры безопасности в месте, где вы должны позволить приложению, чтобы отправить от вашего имени. Он подскажет, и нет ответа на этот вопрос без использования какого-либо программного обеспечения, написанного специально для подавления этого сообщения и ответа на него. Это не идеально подходит для отправки электронных писем. Я бы предложил либо использовать веб-службы Exchange, либо позволить машине быть SMTP и использовать пространство имен System.Net.Mail. Как бы вы ни использовали этот код, который я предоставил для этого, и я тестировал его, и он работает.

+0

Переменная secretImage указывает на полное имя файла? –

+0

У меня была такая же проблема с библиотекой объектов Outlook 16.0. Вы бы подумали, что они обновили бы все, и теперь COM/.net будет работать вместе в гармонии! –

Смежные вопросы