共享日历和编辑私人约会

时间:2014-09-08 10:16:09

标签: soap calendar exchange-server exchangewebservices

我对共享日历和私人约会感到困惑。

第1步:

  • 我已将我的日历与TUser共享为编辑器(在Outlook中)。
  • 我已在我的日历中私人预约PA1
  • 我可以执行以TUser身份登录的SOAP调用,以在我的日历中创建私人约会PA2

第2步:

  • 我可以通过以TUser
  • 登录的SOAP调用读取PA1和PA2
  • 我无法通过以TUser为登录的SOAP调用修改或删除PA1或PA2 (我自己登录时可以这样做)

第3步:

  • 我将使用TUser的日历共享更改为所有者级别。
  • 我仍然无法通过以TUser
  • 登录的SOAP调用来修改或删除PA1或PA2

第4步:

  • 我在我的日历中创建了一个以TUser(现在是所有者)身份登录的私人约会PA3
  • 我无法通过以TUser
  • 登录的SOAP调用来修改或删除PA3

有一些我不理解的行为,我想知道我是否遗漏了某些东西,所以让它工作

  

1)作为编辑器,TUser无法修改私人约会,但可以创建它们并查看有关它们的所有内容。
  2)即使作为所有者,TUser也无法修改/删除它们   3)即使TUser作为所有者为我创建了一个事件,它也无法修改/删除它

这是关于<Sensitivity>Private</Sensitivity>事件的全部内容,其他事件没有问题 运行Exchange Server 2010 SP3,但通过SOAP调用<typ:RequestServerVersion Version="Exchange2007_SP1"/>进行访问 错误消息始终是“在商店中找不到指定的对象”

FWIW,SOAP调用(没有围绕它们的登录):

创建电话:

<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types"
  xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
<soapenv:Header>
  <typ:RequestServerVersion Version="Exchange2007_SP1"/>
  <typ:MailboxCulture>en-US</typ:MailboxCulture>
  <typ:TimeZoneContext>
     <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
  </typ:TimeZoneContext>
</soapenv:Header>
<soapenv:Body>
   <mes:CreateItem SendMeetingInvitations="SendToNone">
   <mes:SavedItemFolderId>
      <typ:DistinguishedFolderId Id="calendar">
         <typ:Mailbox>
            <typ:EmailAddress>j@t.nl</typ:EmailAddress>
         </typ:Mailbox>
      </typ:DistinguishedFolderId>
   </mes:SavedItemFolderId>
      <mes:Items>
         <typ:CalendarItem>
           <typ:Subject>Prive afspraak Jan aangemaakt door TUser</typ:Subject>
           <typ:Sensitivity>Private</typ:Sensitivity>
           <typ:Body BodyType="Text">Prive afspraak Jan aangemaakt door TUser</typ:Body>
           <typ:ReminderIsSet>false</typ:ReminderIsSet>
           <typ:Start>2014-09-11T17:00:00.000Z</typ:Start>
           <typ:End>2014-09-11T18:00:00.000Z</typ:End>
           <typ:LegacyFreeBusyStatus>Busy</typ:LegacyFreeBusyStatus>
         </typ:CalendarItem>
      </mes:Items>
   </mes:CreateItem>
</soapenv:Body>
</soapenv:Envelope>

更新电话:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
   <soapenv:Header>
      <typ:RequestServerVersion Version="Exchange2007_SP1"/>
      <typ:MailboxCulture>en-US</typ:MailboxCulture>
      <typ:TimeZoneContext>
        <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
      </typ:TimeZoneContext>
   </soapenv:Header>
   <soapenv:Body>
      <mes:UpdateItem ConflictResolution="AutoResolve" SendMeetingInvitationsOrCancellations="SendToNone">
         <mes:ItemChanges>
            <typ:ItemChange>
               <typ:ItemId Id="AAMkADdi[snip]aFAAA=" ChangeKey="DwAA[snip]sYFbe"/>
               <typ:Updates>
                  <typ:SetItemField>
                     <typ:FieldURI FieldURI="item:Subject"/>
                     <typ:CalendarItem>
                       <typ:Subject>Gewijzigd door TUser</typ:Subject>
                     </typ:CalendarItem>
                  </typ:SetItemField>
               </typ:Updates>
            </typ:ItemChange>
         </mes:ItemChanges>
      </mes:UpdateItem>
   </soapenv:Body>
</soapenv:Envelope>

2 个答案:

答案 0 :(得分:0)

委托可以查看私人项目(如果代理人可以在Outlook中查看我的私人项目框),但只有邮箱所有者(并且没有其他人,即使您创建了它)也可以编辑私人约会 - 同样在Outlook中,因为它在EWS中。

答案 1 :(得分:0)

诀窍不是共享日历文件夹,而是授予代理访问权限This article describes some differences)。

这是通过`Tools \ Options \ Delegates'完成的。以下是我授予用户 TimeTell 委托访问权限的Outlook 2007屏幕截图:

Adding a delegate user

Setting the relevant delegate permissions

选中代表可以看到我的私人物品复选框是必不可少的。通过这些设置,我的XML代码现在也可以更新私人约会。

注意:如果我通过该委派用户Timetell的配置文件登录Outlook,我可以看到它们,但它们只是标记为“私人约会”,我无法打开或编辑它们: Timetell user looking at my calendar

XML EWS代码(比如使用MAPI)似乎给了我更大的灵活性和allows me to work around the sensitivity in the reported cases