未读邮件无法进入Outlook中的NewmailEx事件

时间:2015-05-07 16:28:10

标签: c# outlook

  • 我希望在收到新邮件时删除附件.....
  • 所以我使用NewmailEx事件.....并尝试了Newmail事件.....
  • 我打开展望 - >发送邮件到我的Outlook邮件 - >事件被解雇 - >但收到的邮件没有显示在我的未读邮件中,即c#编码没有收到收到的邮件(这只发生在第一次mail..关闭和打开outlook..from第二封邮件,操作正常)

我附上我的代码

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.NewMail += new Microsoft.Office.Interop.Outlook
       .ApplicationEvents_11_NewMailEventHandler(ThisApplication_NewMail);
}
private void ThisApplication_NewMail()
{
    Outlook.MAPIFolder inBox = this.Application.ActiveExplorer()
        .Session.GetDefaultFolder(Outlook
        .OlDefaultFolders.olFolderInbox);
    Outlook.Items inBoxItems = inBox.Items;
    Outlook.MailItem newEmail = null;
    inBoxItems = inBoxItems.Restrict("[Unread] = true");

    foreach (object collectionItem in inBoxItems)
    {
        newEmail = collectionItem as Outlook.MailItem;
        if (newEmail != null)
        {
            if (newEmail.Attachments.Count > 0)
            {
                for (int i = 1; i <= newEmail
                   .Attachments.Count; i++)
                {
                    newEmail.Attachments[1].Delete();

                }
            }
        }
    }
}

请帮助我阅读第一封邮件.....当展望开放时......

1 个答案:

答案 0 :(得分:1)

您好像使用NewMail事件,但不使用NewMailEx事件。

当新邮件到达收件箱时以及客户端规则处理发生之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应该假设在这些事件发生后,您将始终获得收件箱中项目数量的一项增加。

您可能还会发现以下系列文章有用: