从外部程序回复(打开)Outlook邮件

时间:2015-04-15 19:19:15

标签: c# vb.net outlook

在外部应用程序中,我想回复电子邮件(Outlook是电子邮件客户端)。电子邮件已在计算机屏幕上打开。在回复中,我想在外部应用程序中插入代码生成的回复。我可以选择搜索特定邮件,然后使用代码进行回复,而不是在单独的Outlook窗口中回复已打开的电子邮件。

任何想法在outlook对象中寻找什么?任何代码示例(vb.net或c#)?

我已经知道如何通过代码从我的外部应用程序在Outlook中创建新的电子邮件,但我不确定如何回复现有的电子邮件。

2 个答案:

答案 0 :(得分:1)

使用Application.ActiveExplorer.CurrentItem访问当前打开的邮件,然后调用MailItem.Reply获取回复MailItem对象,修改其邮件正文(MailItem.Body),调用MailItem.Display将其显示给用户。 / p>

答案 1 :(得分:1)

Outlook项目的Reply方法会从原始邮件中创建一个预先发送给原始发件人的回复。您只需要获取当前打开的电子邮件,在其上调用 Reply 方法并使用Send方法发送电子邮件。

要在资源管理器窗口中获取当前显示的电子邮件,您需要使用Explorer类的Selection属性(请参阅Application类的ActiveExplorer函数)。如果是Inspector窗口,您可以使用Inspector类的CurrentItem属性(请参阅Application类的ActiveInspector函数)。有关C#中的更多信息和示例代码,请参阅How to: Programmatically Determine the Current Outlook Item

Outlook.Inspector inspector = null;
Outlook.MailItem sourceMail = null;
Outlook.MailItem replyMail = null;
try
{
    inspector =  Application.ActiveInspector();
    sourceMail = inspector.CurrentItem as MailItem;
    replyMail = sourceMail.Reply();
    // any modifications if required    
    replyMail.Send(); // just change mail to replyMail because mail variable ///is not declare 
}
catch (Exception ex)
{
    System.Windows.Forms.MessageBox.Show(ex.Message,
        "An exception is occured in the code of add-in.");
}
finally
{
    if (sourceMail != null) Marshal.ReleaseComObject(sourceMail);
    if (replyMail != null) Marshal.ReleaseComObject(replyMail);
    if (inspector != null) Marshal.ReleaseComObject(inspector);
}

另外,您可能会发现How To: Create and send an Outlook message programmatically文章很有帮助。