Взаимодействие между Outlook и моим приложением WPF

Так что это может быть глупый вопрос (или что-то невозможное), но я просто хотел спросить, если кто-то что-то знает. Я пытаюсь открыть Outlook (либо через Office 365 - браузер, либо через приложение Outlook для настольных компьютеров), чтобы составить письмо. Я понял, что работает нормально. Что я хочу знать, так это то, что если я могу захватить то, что было составлено (например, Body, To, Subject, Attachments), в моем приложении WPF, чтобы я мог обновить его с моей стороны. Ребята, вы думаете, возможно ли это?

Вот пример кода, который у меня есть: (Для открытия этого в браузере)

        string To = "abc@ftr.com";
        string subject = "Test Email";
        string body = "This is a test email, Please ignore";
        string url = @"https://outlook.office.com/?path=/mail/action/compose&to=" + To + "&subject=" + subject + "&body=" + body;
        System.Diagnostics.Process.Start(url);

А вот код для его открытия в Outlook Desktop App:

        Microsoft.Office.Interop.Outlook.Application oApp = new  Microsoft.Office.Interop.Outlook.Application();
        Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
        oMsg.Subject = "subject something";
        oMsg.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
        oMsg.HTMLBody = "Test Email";
        oMsg.Attachments.Add("c:/temp/test.txt", Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing);
        oMsg.Display(true);

Спасибо!

Всего 1 ответ


Вы можете перехватить событие ItemSend , которое даст вам ссылку на объект MailItem который собирается отправить. Вот пример кода, который я скопировал с форумов сообщества Microsoft.

public void SendEnMail(Office.IRibbonControl control) //OnAction Function
{
    Outlook.Application oApp = new Outlook.Application();
    Outlook._MailItem myMail = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    myMail.Display(true);
    Outlook.Application application = Globals.ThisAddIn.Application;
    application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
void Application_ItemSend(object Item, ref bool Cancel)
{
    string a = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Body;
    System.Windows.Forms.MessageBox.Show(a);
    Cancel = true;
}