为另一个邮箱创建日历项

时间:2012-01-19 03:38:42

标签: exchange-server exchangewebservices

我正在尝试使用CreateItem为属于我所连接的用户以外的用户的邮箱创建CalendarItem。我连接的用户没有邮箱。

下面是我的xml

<CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
            xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" 
            SendMeetingInvitations="SendToAllAndSaveCopy" >
  <SavedItemFolderId>
    <t:DistinguishedFolderId Id="calendar">
      <Mailbox>
        <EmailAddress>user1@testhost</EmailAddress>
      </Mailbox>
    </t:DistinguishedFolderId>
  </SavedItemFolderId>
  <Items>
    <t:CalendarItem xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
      <Subject>Test Calendar Entry</Subject>
      <Body BodyType="Text">Test.</Body>
      <ReminderIsSet>true</ReminderIsSet>
      <ReminderMinutesBeforeStart>60</ReminderMinutesBeforeStart>
      <Start>2012-01-20T09:00:00</Start>
      <End>2012-01-20T17:00:00</End>
      <IsAllDayEvent>false</IsAllDayEvent>
      <Location>Test Location</Location>
    </t:CalendarItem>
  </Items>
</CreateItem>

将此信息发送到服务器后,我收到的回复是:
[MessageText] =&gt;将请求作为没有邮箱的帐户发出时,必须为任何可分辨文件夹ID指定邮箱主SMTP地址。
[ResponseCode] =&gt; ErrorMissingEmailAddress

此外,我可以从具有邮箱的帐户(省略邮箱元素)成功运行此xml,并且它确实创建了日历项目。

我已经检查了我正在登录的用户,因为它可以完全访问user1的邮箱 我已经尝试过指定UPN而不是主SMTP 如果我指定了无效或非主要的电子邮件地址,我会得到预期的错误,这表明我正在指定正确的元素。

提前感谢任何提示。

2 个答案:

答案 0 :(得分:2)

在对日历项目执行任何操作之前,您必须以其他用户身份进行模拟

答案 1 :(得分:0)

模拟的问题,如果您在2007 Exchange Server上,则您无法控制应用于模拟用户的角色的粒度。 Exchange Server 2010通过基于角色的模拟解决了这个问题。如果您拥有庞大的用户群,您可能需要考虑逐步实施。

我认为标准行为是创建一个服务帐户,该帐户将对您感兴趣的群组/人员拥有模仿权。此方法可以最大限度地减少需要被授予模仿权限的用户数量,并且还允许您控制通过您的API访问

Exchange允许您获得此行为的另一种方式是通过仅通过Outlook UI进行授权。