我编写了一个自定义代码,以便当有电子邮件到达且有附件时,必须将其下载到共享位置,并且每天都会收到电子邮件。
当我每天打开笔记本电脑时,如果我不打开并且有连续邮件(带附件)并且没有下载,例如,当我星期一打开笔记本电脑时,我有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);
}
}
答案 0 :(得分:0)
您是否尝试调试代码?
我在代码中看到以下条件:
inboxitems= inbox.Items.Restrict("[Unread] = true");
和
if (newEmail.Attachments[i].FileName.Contains( "Logic"))
确保电子邮件符合上述条件。
请注意,当大量项目一次添加到文件夹(超过16个)时,不会触发Items类的ItemAdd事件。
P.S。尝试检查Outlook项目的MarkForDownload属性 - OlRemoteStatus值,该值确定远程用户收到项目后的状态。