自定义Outlook插件未按预期下载

时间:2015-03-09 14:01:22

标签: outlook outlook-addin

我编写了一个自定义代码,以便当有电子邮件到达且有附件时,必须将其下载到共享位置,并且每天都会收到电子邮件。

当我每天打开笔记本电脑时,如果我不打开并且有连续邮件(带附件)并且没有下载,例如,当我星期一打开笔记本电脑时,我有3封带附件的邮件,它工作正常(来自satu,星期日,星期一)。

星期一没有从星期一下载最新的报告,它仍在向我显示相同的报告。

这是我的代码..

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);
}
private void items_ItemAdd(object Item) {
    Outlook.Items inboxitems;
    const string destinationDirectory=@"\\Service Now\";
    Outlook.MailItem newEmail=null;
    inboxitems=inbox.Items.Restrict("[Unread] = true");
    try {
        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++) {
                        if (newEmail.Attachments[i].FileName.Contains("Logic")) {
                            //   String Des= destinationDirectory.Remove(0, 1);
                            newEmail.Attachments[i].SaveAsFile(destinationDirectory + newEmail.Attachments[i].FileName);
                            //  MessageBox.Show("Hurry");
                        }
                    }
                }
            }
        }
    }catch (System.Exception ex) {
        MessageBox.Show(""+ex);
    }
}

1 个答案:

答案 0 :(得分:0)

您是否尝试调试代码?

我在代码中看到以下条件:

inboxitems= inbox.Items.Restrict("[Unread] = true");

if (newEmail.Attachments[i].FileName.Contains( "Logic"))

确保电子邮件符合上述条件。

请注意,当大量项目一次添加到文件夹(超过16个)时,不会触发Items类的ItemAdd事件。

P.S。尝试检查Outlook项目的MarkForDownload属性 - OlRemoteStatus值,该值确定远程用户收到项目后的状态。