How to detect that an AppointmentItem is a birthday?

  • Thread starter Thread starter Lincoln Ramsay
  • Start date Start date
L

Lincoln Ramsay

Hello,

I've got code (not VBA but using the object model) to synchronize
appointments and contacts from Outlook to an external source. There is a
problem though because Outlook shows contact birthdays as calendar events. I
would like to detect and suppress these calendar events because the remote
system also has this logic and it leads to multiple calendar events existing
for each birthday.

I've looked at the docs but I can't see how I might detect that an
AppointmentItem is a birthday. Can this be done?
 
Lincoln Ramsay said:
I've looked at the docs but I can't see how I might detect that an
AppointmentItem is a birthday. Can this be done?

Ok... I think I found a way to get this from MAPI...

There is a named property (GUID {00062008-0000-0000-C000-000000000046}, ID
0x8586) that appears to be the Contact's name. This is present on birthday
and anniversary events but not on regular events.

Ugly, but no different to the code I already had to get contact email
addresses via MAPI (to avoid the security dialogs).
 
Itis called ContactLinkName (there are also ContactLinkSearchKey and
ContactLinkEntry properties: 0x8584 and 8585), but AFAIK it will be set only
in Outlook 2007.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
 
Such items will be all-day events with "Birthday" or "Anniversary" in the
Subject property. If you need more confirmation than that, you can extract
the person's name from the Subject, get their contact record and compare the
birthday value for the contact with the Start date for the appointment.
 
Back
Top