email - 通过 EWS 发送邮件时如何获取保存到发送副本的 ItemId

标签 email office365 exchangewebservices

EWS 文档表示,要发送消息并将副本保存到“已发送邮件”文件夹,您应该 use the CreateItem operation with a MessageDisposition value of SendAndSaveCopy .

   <m:CreateItem MessageDisposition="SendAndSaveCopy">
     <m:SavedItemFolderId>
       <t:DistinguishedFolderId Id="sentitems" />
     </m:SavedItemFolderId>
     <m:Items>
       <t:Message>
         <t:Subject>Company Soccer Team</t:Subject>
         <t:Body BodyType="HTML">Are you interested in joining?</t:Body>
         <t:ToRecipients>
           <t:Mailbox>
             <t:EmailAddress><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="31425055585471525e5f455e425e1f525e5c" rel="noreferrer noopener nofollow">[email protected]</a> </t:EmailAddress>
           </t:Mailbox>
         </t:ToRecipients>
       </t:Message>
     </m:Items>
   </m:CreateItem>

成功后,“服务器会使用 CreateItemResponse 消息响应 CreateItem 请求,其中包含 ResponseCode 值 NoError(表明电子邮件已成功创建)以及新创建消息的 ItemId。”

针对 Office 365 使用 EWS,此操作几乎成功。消息已发送,副本已保存到“已发送邮件”...但已保存副本的 ItemId 在响应中返回:

   <m:CreateItemResponse>
     <m:ResponseMessages>
       <m:CreateItemResponseMessage ResponseClass="Success">
         <m:ResponseCode>NoError</m:ResponseCode>
         <m:Items />
       </m:CreateItemResponseMessage>
     </m:ResponseMessages>
   </m:CreateItemResponse>

有没有办法指示 EWS 服务器实际返回已保存副本的 ItemId?或者,发送完成后查找已保存副本的首选机制是什么?

最佳答案

显然该文档要么是错误的,要么是不适用的。 This MSDN blog post符合我的经验:SendAndSaveCopy CreateItem 请求没有返回 ItemId。它建议如下:

只需在创建邮件时使用自定义扩展属性标记您的电子邮件,然后在发送邮件后使用该扩展属性在“已发送邮件”文件夹中查找该邮件。

评论者建议,您应该执行以下操作,而不是使用昂贵的 FindItems-with-SearchFilter 调用来查找带有自定义属性标记的已保存副本:

1。设置您的扩展 Prop 。

2。对发送的项目文件夹执行没有任何限制的 FindItem,按创建日期降序排序,索引页面 View 约为 5。将您的扩展 prop 包含在 PropertySet 中。

3。迭代结果寻找您的扩展属性。

关于email - 通过 EWS 发送邮件时如何获取保存到发送副本的 ItemId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166465/

相关文章:

php - filter_var() 在 php 电子邮件表单中抛出错误异常

node.js - 是否可以在 Node.js 中实现 SharePoint 2013 远程事件接收器?

exchangewebservices - 插入交换约会时出现 EndDate 早于 StartDate 错误

c# - 如何通过 C# 中的 Exchange Web 服务确定电子邮件的发件人?

android - 在 onActivityResult 中检测电子邮件是否已发送

django - 使用 Django 通过 AWS 发送电子邮件,并通过反向 DNS 设置指向不同的服务器

javascript - 如何在 Mac 上获取 Word 版本

java - 用javamail IMAP访问mail office 365

java - Java EWS API 的问题

php - 使用 PHP 发送电子邮件有什么要求?