我正在尝试使用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 如果我指定了无效或非主要的电子邮件地址,我会得到预期的错误,这表明我正在指定正确的元素。
提前感谢任何提示。
答案 0 :(得分:2)
在对日历项目执行任何操作之前,您必须以其他用户身份进行模拟
答案 1 :(得分:0)
模拟的问题,如果您在2007 Exchange Server上,则您无法控制应用于模拟用户的角色的粒度。 Exchange Server 2010通过基于角色的模拟解决了这个问题。如果您拥有庞大的用户群,您可能需要考虑逐步实施。
我认为标准行为是创建一个服务帐户,该帐户将对您感兴趣的群组/人员拥有模仿权。此方法可以最大限度地减少需要被授予模仿权限的用户数量,并且还允许您控制通过您的API访问
Exchange允许您获得此行为的另一种方式是通过仅通过Outlook UI进行授权。