При работе с Outlook через Delphi может возникнуть проблема, когда удаленные контакты по-прежнему доступны для обновления. Это происходит из-за того, что при удалении контакты не удаляются полностью, а перемещаются в папку "Удаленные элементы". В данной статье мы рассмотрим, как определить, находится ли контакт в этой папке, и как его восстановить, если это необходимо.
Определение удаленного контакта
Чтобы определить, удален ли контакт, можно использовать свойство Parent объекта ContactItem. Оно возвращает объект MAPIFolder, который можно сравнить с папкой удаленных элементов, полученной через метод NameSpace.GetDefaultFolder(olFolderDeletedItems).
uses
OutlookOleInterop_TLB;
var
OutlookApp: IOleClientSite;
Mapi: IMAPISession;
aContact: IOleObject;
DeletedItemsFolder: IMAPIFolder;
begin
OutlookApp := CreateOleObject('Outlook.Application');
Mapi := OutlookApp.GetNameSpace('MAPI');
DeletedItemsFolder := Mapi.GetDefaultFolder(olFolderDeletedItems);
// Получение контакта
if ContactOutlookEntryID.AsString <> '' then
begin
aContact := Mapi.GetItemFromID(ContactOutlookEntryID.AsString);
try
// Проверка, находится ли контакт в папке удаленных элементов
if aContact.Parent.EntryID = DeletedItemsFolder.EntryID then
begin
// Контакт находится в удаленных элементах
end;
except
on E: EOleException do
begin
// Обработка возможных ошибок
end;
end;
end;
// ... Остальной код ...
end;
Восстановление удаленного контакта
Если контакт действительно находится в папке "Удаленные элементы", его можно восстановить, используя метод Move объекта ContactItem, чтобы переместить его обратно в папку контактов.
if aContact.Parent.EntryID = DeletedItemsFolder.EntryID then
begin
// Восстановление контакта
aContact.Move(Contacts.Items);
end;
Важные замечания
Учтите, что идентификаторы элементов (EntryID) могут оставаться неизменными при перемещении между папками в PST-файле.
Если контакт был окончательно удален из папки "Удаленные элементы", восстановить его через API Outlook может быть невозможно.
При перемещении контакта из папки "Удаленные элементы" в папку контактов, могут возникнуть ошибки при сохранении. В таком случае, возможно, придется создать новый контакт.
Следуя этим шагам, вы сможете избежать обновления удаленных контактов в Outlook при использовании Delphi и восстановить контакты, если это необходимо.
При работе с Outlook через Delphi важно правильно обрабатывать удаленные контакты, чтобы избежать их нежелательного обновления и восстановления, если это необходимо.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS