如何通过Exchange Web服务访问日历事件的会议请求? (以及PHP和SOAP)

时间:2011-07-22 22:59:42

标签: php soap exchange-server exchangewebservices

有没有办法通过Exchange Web服务访问(和修改)MeetingRequests?特别是通过PHP和SOAP。

当我尝试使用CreateItem显式创建MeetingRequest时,我收到一条错误消息,指出MeetingRequest是CreateItem的无效类型,并且在创建具有适当MessageDispositions的CalendarItem时会自动创建MeetingRequests。但是,创建CalendarItem并且不发送它,然后使用GetItem检索详细信息不会产生会议请求(即,它还不存在)。

据我所知,MeetingRequests是同时创建和发送的,并且无法在两者之间进行编辑。我希望我错了。我错了吗?

最终,我正在尝试为会议请求添加附件。现在我可以添加附件到会议,但不能添加到请求(即,在日历中打开会议时,附件打开正常;当收到会议请求时(在收件箱中)无法打开附件。

1 个答案:

答案 0 :(得分:4)

是的,这是可能的。

首先,创建约会:

      <m:CreateItem SendMeetingInvitations="SendToNone">
    <m:SavedItemFolderId>
      <t:DistinguishedFolderId Id="calendar" />
    </m:SavedItemFolderId>
    <m:Items>
      <t:CalendarItem>
        <t:Subject>testsubject</t:Subject>
        <t:Body BodyType="Text">testbody</t:Body>
        <t:Start>2011-07-24T09:36:58+02:00</t:Start>
        <t:End>2011-07-24T10:36:58+02:00</t:End>
      </t:CalendarItem>
    </m:Items>
  </m:CreateItem>

然后,将附件附加到约会:

      <m:CreateAttachment>
    <m:ParentItemId Id="itemid" />
    <m:Attachments>
      <t:FileAttachment>
        <t:Name>test.pdf</t:Name>
        <t:IsInline>false</t:IsInline>
        <t:IsContactPhoto>false</t:IsContactPhoto>
        <t:Content>base64 encoded content here</t:Content>
      </t:FileAttachment>
    </m:Attachments>
  </m:CreateAttachment>

最后,添加收件人并更新会议。

      <m:UpdateItem ConflictResolution="AutoResolve" SendMeetingInvitationsOrCancellations="SendToAllAndSaveCopy">
    <m:ItemChanges>
      <t:ItemChange>
        <t:ItemId Id="itemid of the original item" ChangeKey="changekey" />
        <t:Updates>
          <t:SetItemField>
            <t:FieldURI FieldURI="calendar:RequiredAttendees" />
            <t:CalendarItem>
              <t:RequiredAttendees>
                <t:Attendee>
                  <t:Mailbox>
                    <t:Name>Someone</t:Name>
                    <t:EmailAddress>mailaddress</t:EmailAddress>
                  </t:Mailbox>
                </t:Attendee>
              </t:RequiredAttendees>
            </t:CalendarItem>
          </t:SetItemField>
        </t:Updates>
      </t:ItemChange>
    </m:ItemChanges>
  </m:UpdateItem>

这会将附件添加到邀请消息中。