Discussion:
Responding to Meeting Requests via C++
(too old to reply)
Ed Kramer
2008-04-28 16:17:01 UTC
Permalink
Greetings fellow developers,

I am in the process of adding a feature to a service that already processes
messages using MAPI in C++ with exchange 2003 to allow it to properly respond
to meeting requests. Unfortunately I've reached a bit of a stumbling block in
my response email. As far as I can tell everything is almost entirely set up
correctly. However it would seem that two bits of information required are
missing and I am not having any luck doing net and msdn searches to find
them. I am hoping someone here can shed some light on the situation. If for
some reason this question is inappropriate to this forum, please let me know
and I will move it elsewhere.

Part One:
In the organizer's inbox, if you open up the response Email from the
attendee in Outlook, you see 3 fields in the GUI. Accepted, Tentative,
Declined. Each of which hold the names of the attendee who responded to the
message under the appropriate heading. If the user accepted the meeting
through Outlook for example his name will appear under 'Accepted' and so
forth, appearing like this:

Accepted: George Washington; Thomas Jefferson
Tentative: Benjamin Franklin
Declined: John Adams

In my response email, this fields always say:

Accepted: No attendees have accepted.
Tentative: No attendees have tentatively accepted.
Declined: No attendees have declined.

Part Two:
In the Organizer's calendar, if you open the meeting request there and flip
to the 'tracking' tab. You see a list view of each person invited to the
meeting, their attendance requirement level and their response. If you accept
an appointment through outlook the Response field for the specified attendee
will have a value of none, declined, tentative or accepted such as:

Name.........................Attendance................Response
George Washington............Required Attendee.........Accepted
Benjamin Franklin............Required Attendee.........Tentative
John Adams...................Required Attendee.........Declined

In my calendar after the email arrives the only thing I ever see is 'None'
like this:

Name.........................Attendance................Response
George Washington............Required Attendee.........None
Benjamin Franklin............Required Attendee.........None
John Adams...................Required Attendee.........None

I have noticed that each of the attendees are recipients in the recipients
table of the calendar object and that if you change the Response status for a
user, then save the calendar item and read the properties of the IMessage
Object, the PR_RECIPIENT_TRACKSTATUS for the attendee changes to match the
value you specified when you saved the calendar item.

Presumably, the response email is the only communication between the
attendee and the originator of the meeting and there is no logical reason why
the attendee's outlook client should have any special access over the
originators. Indeed giving it such would be a dangerous hazard. Therefore we
can assume that these issues are caused by some malformation of my response
email. Either a property ( or properties ) not set, or not populated
correctly. Therefore I guess there is a property, that is associated with the
PR_RECIPIENT_TRACKSTATUS flag that appears in the attendee response email and
tells the originator's calendar the details needed to properly populate the
calendar item.

So that brings me to my questions:

Question 1: How do I appropriately populate the attendee response email so
that the Accepted:, Tentative: and Declined: fields on the email appear as
normal.

Question 2: How do I appropriately populate the attendee response email so
that the calendar items' PR_RECIPIENT_TRACKSTATUS property in for the
attendee in the recipient's table is properly populated.
Dan Mitchell
2008-04-28 16:55:49 UTC
Permalink
Post by Ed Kramer
I am in the process of adding a feature to a service that already
processes messages using MAPI in C++ with exchange 2003 to allow it to
properly respond to meeting requests. Unfortunately I've reached a bit
of a stumbling block in my response email. As far as I can tell
everything is almost entirely set up correctly.
MS recently released the docs on this stuff:

http://msdn2.microsoft.com/en-us/library/cc425490(EXCHG.80).aspx

is for calendaring. I'd guess you're missing one of the properties
somewhere along the way, but that should let you find out which one it is.

-- dan
Ed Kramer
2008-04-28 19:23:01 UTC
Permalink
I have actually downloaded that and have gone over the relevant sections (
2.2.3 Meeting Object, 2.2.6 Meeting Response Object, 3.1.4.7.1 Accepting a
Meeting, 3.1.4.7.4 Sending a Meeting Respone ). I've actually used it as a
guide. I've gone through and made a bullet list so I can check off on what
I've put in, hopefully that'll help. However I'm noticing some things that
don't match up to what I'm seeing using Outlookspy in the property store.
Differing version of exchange perhaps?

What I've been doing to help me test is I create and respond to a meeting
request in outlook entirely and create one in outlook and then respond to it
via code so i can see what the differences are and can compare to the list in
the document on pages 102-106. Looking at this property lists, I opened up
the outlook responded item and I'm noticing that a lot of properties they
describe in the doc aren't there.

Example:
document........................................Property Store
2.2.3.1 PidLidAppointmentSequence 0x82E7........0x82E7 Not found
2.2.3.2 PidLidAppointmentLastSequence 0x81AF....0x81AF Not found
2.2.3.3 PidLidAppointmetnReplyTime 0x8139.......0x8139 Not Found
2.2.3.4 PidLidFInvited 0x81DA...................0x81DA Not Found
2.2.3.5 PidLidAppointmentReplyName 0x81AE.......0x81AE Not Found

Then in 4.2.1.2.4 'Accepting the Meeting Request' it mentions
PidLidAppointmentMessageClass 0x8311 should contain a value of
IPM.Appointment. But in outlookspy on the message I can see the
IPM.Appointment value under 0x8255001E and PR_MESSAGE_CLASS ( 0x001A001E ).
Post by Dan Mitchell
Post by Ed Kramer
I am in the process of adding a feature to a service that already
processes messages using MAPI in C++ with exchange 2003 to allow it to
properly respond to meeting requests. Unfortunately I've reached a bit
of a stumbling block in my response email. As far as I can tell
everything is almost entirely set up correctly.
http://msdn2.microsoft.com/en-us/library/cc425490(EXCHG.80).aspx
is for calendaring. I'd guess you're missing one of the properties
somewhere along the way, but that should let you find out which one it is.
-- dan
Ed Kramer
2008-04-29 13:34:02 UTC
Permalink
I think I've figured out what my problem was as far as finding the properties
the doc is talking about. I was looking at the property tag number rather
than the ID. I still can't seem to locate the
PidLidAppointmentProposedStartWhole and EndWhole though.
Post by Ed Kramer
I have actually downloaded that and have gone over the relevant sections (
2.2.3 Meeting Object, 2.2.6 Meeting Response Object, 3.1.4.7.1 Accepting a
Meeting, 3.1.4.7.4 Sending a Meeting Respone ). I've actually used it as a
guide. I've gone through and made a bullet list so I can check off on what
I've put in, hopefully that'll help. However I'm noticing some things that
don't match up to what I'm seeing using Outlookspy in the property store.
Differing version of exchange perhaps?
What I've been doing to help me test is I create and respond to a meeting
request in outlook entirely and create one in outlook and then respond to it
via code so i can see what the differences are and can compare to the list in
the document on pages 102-106. Looking at this property lists, I opened up
the outlook responded item and I'm noticing that a lot of properties they
describe in the doc aren't there.
document........................................Property Store
2.2.3.1 PidLidAppointmentSequence 0x82E7........0x82E7 Not found
2.2.3.2 PidLidAppointmentLastSequence 0x81AF....0x81AF Not found
2.2.3.3 PidLidAppointmetnReplyTime 0x8139.......0x8139 Not Found
2.2.3.4 PidLidFInvited 0x81DA...................0x81DA Not Found
2.2.3.5 PidLidAppointmentReplyName 0x81AE.......0x81AE Not Found
Then in 4.2.1.2.4 'Accepting the Meeting Request' it mentions
PidLidAppointmentMessageClass 0x8311 should contain a value of
IPM.Appointment. But in outlookspy on the message I can see the
IPM.Appointment value under 0x8255001E and PR_MESSAGE_CLASS ( 0x001A001E ).
Post by Dan Mitchell
Post by Ed Kramer
I am in the process of adding a feature to a service that already
processes messages using MAPI in C++ with exchange 2003 to allow it to
properly respond to meeting requests. Unfortunately I've reached a bit
of a stumbling block in my response email. As far as I can tell
everything is almost entirely set up correctly.
http://msdn2.microsoft.com/en-us/library/cc425490(EXCHG.80).aspx
is for calendaring. I'd guess you're missing one of the properties
somewhere along the way, but that should let you find out which one it is.
-- dan
Loading...