如何在Outlook C#代码

时间:2018-02-06 20:30:21

标签: c# .net automation vsto outlook-addin

我正在使用Visual Studio 2017安装的办公开发包,想要创建一个基于收到的电子邮件响应的插件。 基本上我想要监控一个Infra支持邮箱,它根据传入的邮件内容将电子邮件转发给相关团队。

关于如何做到这一点的任何建议

2 个答案:

答案 0 :(得分:0)

有多种方法可以实现所需的功能:

  1. 使用规则设置转发规则。您可以在Outlook中手动执行此操作并以编程方式执行此操作。 Outlook对象模型提供了所有必需的类,有关详细信息,请参阅How to: Create a Rule to Assign Categories to Mail Items Based on Multiple Words in the Subject

  2. 使用NewMailEx事件处理传入的电子邮件。当新邮件到达收件箱时以及客户端规则处理发生之前,NewMailEx事件将触发。您可以使用传递的EntryIDCollection参数表示的条目ID来调用NameSpace.GetItemFromID方法并处理该项目。在事件处理程序中,您可以检查收到的电子邮件并以编程方式转发电子邮件。 MailItem类的Forward方法对项执行Forward操作,并将生成的副本作为MailItem对象返回。

  3.  Sub RemoveAttachmentBeforeForwarding() 
       Dim myinspector As Outlook.Inspector 
       Dim myItem As Outlook.MailItem 
       Dim myattachments As Outlook.Attachments 
       Set myinspector = Application.ActiveInspector 
       If Not TypeName(myinspector) = "Nothing" Then 
         Set myItem = myinspector.CurrentItem.Forward 
         Set myattachments = myItem.Attachments 
         While myattachments.Count > 0 
           myattachments.Remove 1 
         Wend 
         myItem.Display 
         myItem.Recipients.Add "Dan Wilson" 
         myItem.Send 
       Else 
         MsgBox "There is no active inspector." 
       End If 
     End Sub
    

    您可能会发现How To: Respond to an Outlook email programmatically文章很有帮助。

答案 1 :(得分:0)

此代码使用事件将传入邮件发送到默认收件箱

using Outlook = Microsoft.Office.Interop.Outlook;        
public partial class ThisAddIn
{
    Outlook.NameSpace outlookNameSpace;
    Outlook.MAPIFolder inbox;
    Outlook.Items items;
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        outlookNameSpace = this.Application.GetNamespace("MAPI");
        inbox = outlookNameSpace.GetDefaultFolder(
                Microsoft.Office.Interop.Outlook.
                OlDefaultFolders.olFolderInbox);

        items = inbox.Items;
        items.ItemAdd +=
            new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
    }

    void items_ItemAdd(object Item)
    {
        Outlook.MailItem mail = (Outlook.MailItem)Item;
        if (Item != null)
        {
            Outlook.MailItem replyMail = mail.Reply();
            //Do your response
            mail.Send();
        }

    }
}