Ali*_*ter 5 delphi mapi outlook
我有一个用Delphi编写的应用程序,用于在outlook中添加/更新联系人.我遇到的问题是,如果在Outlook中删除了联系人,代码仍会找到联系人并对其进行更新 - 并且联系人仍然会被删除.有没有办法可以确定联系人是否被删除或取消删除联系人?
大致代码看起来像:
OutlookApp := CreateOleObject('Outlook.Application');
Mapi := OutlookApp.GetNameSpace('MAPI');
//.....
try
if ContactOutlookEntryID.AsString <> '' then
aContact := Mapi.GetItemFromID(ContactOutlookEntryID.AsString);
except
end;
//try to locate the contact if they have been synchro'd before
if VarIsEmpty(aContact) then //if not found
aContact := Contacts.Items.Add(2); //add a new contact to outlook
aContact.LastName := ContactSurname.AsString;
//.....
Run Code Online (Sandbox Code Playgroud)
删除联系人后,它们会被放入“已删除邮件”文件夹中。除了位于该文件夹中之外,没有其他“已删除”状态。“取消删除”就像将其移回一样简单。
ContactItem 对象上有一个Move方法,您可以使用该方法将其移回默认联系人文件夹,您可以通过NameSpace.GetDefaultFolder方法获取该文件夹。
编辑 要确定联系人是否位于已删除项目文件夹中,您可以查看 Parent 属性,该属性应返回 MAPIFolder 对象。然后,您可以将其 EntryID 与 GetDefaultFolder(olFolderDeletedItems) 返回的 EntryID 进行比较。