I'm working with Exchange 5.5 and I need to track messages within Public
Folders that have been deleted/marked for deletion by a user, but have not
been purged by the Exchange server because the Exchange Admin has configured
the Public Folder(s) with a non-zero "Deleted item retention time". I am
working with information associated with MAPI messages that is
kept/maintained outside of Exchange and I would like to maintain that
information when the message is "deleted" but still recoverable from a
general users standpoint using "Recover Deleted Items...". That way when
the message is recovered, the external information is still available.
Only when the message has really been deleted/purged will the external info
be purged as well. With an Outlook extension, I have control over the
initial "delete" process, but I haven't seen any documentation that defines
any special MAPI properties a message has when it has been deleted (and not
purged) nor have I found any information on how Outlook is able to
find/display deleted messages within the "Recover Delete Items..." Tool
option.
Using a sample program, I can open a public folder, call QueryRows to get a
message (save off the message's ENTRYID) , call GetMessageStatus to obtain
its status and then call DeleteMessages to delete the message. With the
"Deleted item retention time" set on the test folder, I can repeatably call
GetMessageStatus on that message passing in the saved message ENTRYID and
successfully access the message. If I then go to an Outlook client, select
"Recover Deleted Items ..." under the Tools menu I can see the deleted test
message. If I then "Purge" the deleted message, calls to GetMessageStatus
with the saved ENTRYID now fail. This is fine as far as detecting when a
"deleted" message is purged, but it doesn't tell me if the message has been
recovered.
Ultimately, I would like to know a message has been marked for deletion by
the presence of one or more properties within the message. There is a
property PR_MSG_STATUS that looks like it fits the bill, but its use is
defined by a client and is not maintained by the Exchange server itself.
Calling GetMessageStatus against a deleted message does not show that the
message is marked for deletion. I can call SetMessageStatus to set status
bits and I can successfully retrieve them with GetMessageStatus, but after
all is said and done, Exchange just passes this info along unchanged.
Another possibilty is to somehow see/detect deleted items the same way as
the Outlook "Recover Deleted Items..." Tool does. Given a public folder, it
is somehow able to show deleted items that are in the folder.
Hopefully, the presence of a property which tells me a message has been
deleted will also tell me by its absence that the message has been restored.
Similarly, if I can see/detect deleted messages within some special MAPI
deleted items cache/table then I can tell a message has been restored by the
fact that it isn't in the cache/table.
Thanks in advance,
Keith Ingalls