我正在将业务从 Kerio Connect 迁移到 MS Exchange 2010(不要问为什么)。因此,我编写了一些代码,通过 CalDAV 从 Kerio 中提取事件和任务,并使用 EWS(Exchange Web 服务)在 Exchange 中重新创建它们。
一切都很好,除了一件事:组织者和参与者之间的联系被打破了。我的意思是,参与者可以编辑会议,这是他不应该做的,如果组织者更改会议时间,参与者不会得到更新。
我查看了 Outlook 2011 和 iCal 在创建事件时所做的事情,并且我执行相同的步骤,除了一件重要的事情:我在 Exchange 中重新创建的事件是参与者已经接受邀请的事件,我们不想发送邀请当我们开始迁移时。
这是在 EWS 中创建事件的请求:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<ns2:MailboxCulture xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages">en-US</ns2:MailboxCulture>
<ns2:RequestServerVersion xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages" Version="Exchange2010_SP1" />
<ns2:TimeZoneContext xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages">
<ns2:TimeZoneDefinition Id="Eastern Standard Time" />
</ns2:TimeZoneContext>
</S:Header>
<S:Body>
<ns3:CreateItem xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns3="http://schemas.microsoft.com/exchange/services/2006/messages" SendMeetingInvitations="SendToAllAndSaveCopy">
<ns3:SavedItemFolderId>
<ns2:FolderId Id="AAMkADZkZDFkMjcwLTM5YWItNGRiYy05YzA0LWZhZmM3MjBkNDM1ZgAuAAAAAAAQdcJHRof+QosJDrhZyY00AQCw+XICdccgRJNrvNFaYvpgAAAAevvIAAA=" />
</ns3:SavedItemFolderId>
<ns3:Items>
<ns2:CalendarItem>
<ns2:Subject>Test prob -> probert</ns2:Subject>
<ns2:Body BodyType="Text">
</ns2:Body>
<ns2:Importance>Normal</ns2:Importance>
<ns2:UID>3CB0FF7D-63F0-47A0-80B6-3B3131E7BCF4</ns2:UID>
<ns2:Start>2012-12-21T17:00:00</ns2:Start>
<ns2:End>2012-12-21T18:30:00</ns2:End>
<ns2:IsAllDayEvent>false</ns2:IsAllDayEvent>
<ns2:Location>salle3219_6</ns2:Location>
<ns2:RequiredAttendees>
<ns2:Attendee>
<ns2:Mailbox>
<ns2:Name>Pascal Robert</ns2:Name>
<ns2:EmailAddress>probert@mydomain.com</ns2:EmailAddress>
</ns2:Mailbox>
<ns2:ResponseType>Accept</ns2:ResponseType>
</ns2:Attendee>
</ns2:RequiredAttendees>
<ns2:OptionalAttendees>
<ns2:Attendee>
<ns2:Mailbox>
<ns2:Name>salle3219_6</ns2:Name>
<ns2:EmailAddress>salle3219_6@mydomain.com</ns2:EmailAddress>
</ns2:Mailbox>
<ns2:ResponseType>Accept</ns2:ResponseType>
</ns2:Attendee>
</ns2:OptionalAttendees>
</ns2:CalendarItem>
</ns3:Items>
</ns3:CreateItem>
</S:Body>