使用" SentOnBehalfOf"使用Exchange EWS

时间:2014-09-16 23:07:47

标签: c# soap exchange-server exchangewebservices

我的任务是编写一个简单的应用程序来使用EWS发送电子邮件。

我一直在关注这里列出的例子:

http://msdn.microsoft.com/en-us/library/office/dn789003(v=exchg.150).aspx

使用我们的交换服务器地址。使用这个例子,在我尝试从我有权访问的第二个邮箱发送邮件之前,所有内容都会变得非常好。我可以毫无困难地从我自己的收件箱发送邮件。

我稍微修改了一下这个例子,但基本部分是表示soap请求的文本字符串。在那个字符串中,我试图添加:

<t:Sender>
    <t:Mailbox>
        <t:EmailAddress>AltMailboxAddress@server.com</t:EmailAddress>
    </t:Mailbox>
</t:Sender>

发送消息,但收件人仍然知道它来自我。我也试过了:

<t:From>
    <t:Mailbox>
        <t:EmailAddress>AltMailboxAddress@server.com</t:EmailAddress>
    </t:Mailbox>
</t:From>

返回500内部服务器错误。

我忍不住觉得我使用了错误的标签。我可以通过Outlook访问此邮箱,它显示为我的个人资料下的第二个邮箱。此外,我已经能够通过自动化Outlook并使用MailItem对象的“SentOnBehalfOf”属性来通过此帐户发送邮件,但此处没有骰子。

我们真的想摆脱自动化Outlook发送消息的可能性,我们最近遇到了一两个问题,看起来这可能是最后一个明确的障碍。

谢谢!

编辑:好的,我看到发件人标签用于“代表发送”类型的操作,但这仍然不能正常工作....

1 个答案:

答案 0 :(得分:1)

要代表EWS中的另一个用户发送您不需要设置发件人属性您需要做的是使用您要代表发送的用户的SavedItemFolderId中的SentItems文件夹,EWS将执行休息,例如

 <soap:Header>
 <t:RequestServerVersion Version="Exchange2013_SP1" />
</soap:Header>
<soap:Body>
  <m:CreateItem MessageDisposition="SendAndSaveCopy">
    <m:SavedItemFolderId>
      <t:DistinguishedFolderId Id="sentitems">
        <t:Mailbox>
          <t:EmailAddress>SendingonBehalf@domain.onmicrosoft.com</t:EmailAddress>
        </t:Mailbox>
      </t:DistinguishedFolderId>
    </m:SavedItemFolderId>
    <m:Items>
      <t:Message>
        <t:Subject>this is a test</t:Subject>
        <t:ToRecipients>
          <t:Mailbox>
            <t:EmailAddress>recip@domain.onmicrosoft.com</t:EmailAddress>
          </t:Mailbox>
        </t:ToRecipients>
      </t:Message>
    </m:Items>
  </m:CreateItem>
</soap:Body>

您可以检查以确保用户拥有使用Get-Mailbox的权限并查看GrantSendOnBehalfTo属性

干杯 格伦