Запуск нового сообщения Outlook 2007 из C # .NET - PullRequest
0 голосов
/ 18 сентября 2009

Я ищу самый полный пример, чтобы запустить Outlook 2007 с новым сообщением, запущенным через C # .NET (я использую VS2008 .NET 3.0)

Вот что я пытаюсь:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.Outlook;

namespace CreateMessage {

    class Program {

        static void Main ( string[] args ) {

            // Create outlook application object.
            var outlookApplication = new Microsoft.Office.Interop.Outlook.Application();

            // Create mail message.
            var newMail = (Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem( Microsoft.Office.Interop.Outlook.OlItemType.olMailItem );
            newMail.To = "example@exam.ple";
            newMail.Subject = "Example";
            newMail.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
            newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
            newMail.Display( false );

        }

    }
}

Вот ссылки на мой проект:

альтернативный текст http://img4.imageshack.us/img4/9350/referencesi.jpg

Вот случайное исключение, которое я получаю (примерно половину времени, когда я запускаю программу):

System.Runtime.InteropServices.COMException was unhandled
  Message="The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))"
  Source="Interop.Microsoft.Office.Interop.Outlook"
  ErrorCode=-2147417846
  StackTrace:
       at Microsoft.Office.Interop.Outlook._MailItem.set_To(String To)
       at CreateMessage.Program.Main(String[] args) in C:\Users\Adam\Projects\GGS\CreateMessage\Program.cs:line 17
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Примечание: я нашел много ответов и примеров о работе с Outlook через Interop, но большинство ответов не показывают заявления об использовании или пытаются сделать что-то на следующем уровне по сравнению с тем, для которого я снимаю , Я просто пытаюсь открыть Outlook, с новым сообщением и, возможно, с небольшим количеством заполненной информации (т.е. Тема, Кому и т. Д.). Копирование и вставка любых примеров, которые я обнаружил до сих пор, не компилируется, потому что они представляют собой фрагменты кода, а не полностью функционирующий базовый пример, который компилируется.

спасибо!

1 Ответ

1 голос
/ 18 сентября 2009

Я не уверен в вашем вопросе, но отображаемое сообщение об ошибке означает, что вы не добавили сборку. Для этого разверните свой проект, щелкните правой кнопкой мыши ссылку и выберите «Добавить ссылку ...». Затем перейдите на вкладку «COM» (в любом случае на VS2008) и найдите «Библиотеку объектов Microsoft Outlook 12.0» (конкретная версия может отличаться на вашем компьютере в зависимости от того, какая версия Outlook установлена.) Выделите ее и нажмите кнопку «ОК». Я думаю, что это должно очистить вашу ошибку и направить вас на правильный путь.

...