【问题标题】:Using "SentOnBehalfOf" With Exchange EWS将“SentOnBehalfOf”与 Exchange EWS 一起使用
【发布时间】:2014-09-16 23:07:46
【问题描述】:

我的任务是编写一个简单的应用程序来使用 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 发送邮件的自动化,我们最近遇到了一两个问题,这看起来可能是最后一个需要清除的主要障碍。

谢谢!

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

【问题讨论】:

    标签: c# soap exchange-server exchangewebservices


    【解决方案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 属性

    干杯 格伦

    【讨论】:

    • 谢谢!这有帮助,但不是完整的解决方案。我不知道这只是我们的服务器设置方式还是什么,但是当我使用您提供的 xml 发送消息时,它仍然显示为来自我的默认邮箱。奇怪的是,它也没有出现在我自己的或 alt 邮箱发送的项目文件夹中。但是,使用这个 xml 并添加 From 元素就可以了。我只是想我会记下它并传递给你。我最初尝试将其与发件人标签配对,但产生了错误。
    • 另一条评论。即使在与使用 from 元素配对使用此方法时,已发送项目也不会出现在已发送项目文件夹中。不完全是世界末日,但也不完全完美。如果您有任何建议,请告诉我!再次感谢!
    【解决方案2】:

    这是您需要的 From 元素 (ref):

    '此元素用于“代表”电子邮件发送。'

    我不确定,但我认为如果您具有“代理发送”权限,那么电子邮件将发送作为发件人地址,如果您只有“代表发送”权限,则电子邮件将被发送用那个代替。

    指定SavedItemFolderId 表示将电子邮件放在哪里,但您可以将它们保存到发件人邮箱或保存到发件人邮箱。当然,您需要相应文件夹的权限才能将它们保存在那里。

    如果您还没有,最简单的方法是通过托管 API 与 EWS 交互,而不是直接使用 XML 进行 Web 服务调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多