Outlook和WPF应用程序之间的交互

时间:2020-01-15 17:22:04

标签: c# .net wpf outlook

所以,这可能是一个愚蠢的问题(或不可能的事情),但我只是想问一问,以防有人知道。我正在尝试打开Outlook(通过Office 365-浏览器或通过Outlook桌面应用程序)来撰写电子邮件。我做的很好。我想知道的是,是否有一种方法可以捕获WPF应用程序中的内容(例如,正文,收件人,主题,附件),以便最终进行更新。你们认为这是否可能?

这是示例代码:(用于在浏览器中打开)

final_result = (aggregate_df.assign(DayType = aggregate_df['DayType'].map({0:'Weekdays', 
                                                                           1:'Weekend'}))
                            .pivot_table(columns='DayType',values = 'Qty',index='Id',fill_value=0)
                            .reset_index()
                            .rename_axis(columns=None))
print(final_result)

    Id  Weekdays  Weekend
0  B07      4858     1677
1  B08      3741        0

这是在Outlook Desktop App中打开它的代码:

        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);

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以挂钩ItemSend事件,这将为您提供对即将发送的MailItem对象的引用。这是我从Microsoft Community Forums

复制的一些示例代码
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;
}