Search code examples
vb.netvbaemailoutlookcollaboration

Determine who has read a mail in shared mailbox


I'm thinking about a possibility to determine who has read a mail in a shared mailbox at Outlook 2010.

Of course a MailItem doesn't hold a property like "readBy", that's why I'm looking for a way to respond to the fact that a message has been marked as read. Then I could write the current user name to a userdefined field.

My first idea:

Listen to MailItem.Read() or MailItem.Open() with a VBA macro, but - when I'm not wrong - MailItem.Open() is thrown when a MailItem is focused and shown in the reading pane. If Outlook doesn't mark it as read automatically, the Info "Read by Max" would be wrong. MailItem.Read() is thrown only when a MailItem is opened to a new window, but what's when I press Ctrl+Enter?

After some Googling it seems that VBA isn't able to solve this on a good way or is it? Should I think about writing an Add-In?

Do you have any idea how I could go about this? Any thoughts would be greatly appreciated.


Solution

  • That would be a bad idea - now you need to modify the message when all a user did was read it. And that will automatically update the last modified time/name/entry id.

    Keep in mind that read/unread status is technically not a part of message, hence resetting it does not modify the message. More than that, the PF store stores the read/unread state on the per-user basis.