电子邮件和 Exchange 中的 EWS

本文档可能包含与预发布功能或产品相关的内容,这些功能或产品在最终商业发布之前可能会有重大变化。本文档按"原样"提供,仅供参考,Microsoft 不在本文档中作出任何明示或暗示担保。 了解如何处理电子邮件,包括在 Exchange 中如何创建电子邮件以及如何通过使用 EWS 托管的 API 或 EWS 执行其他电子邮件相关任务。

其核心是,Exchange 与电子邮件有关。 但是,电子邮件是怎么形成的呢? 电子邮件是 Exchange 中的一种强类型的邮件,这意味着它们包含一组特定属性,甚至在发送之前也是如此。 电子邮件可由 EWS 托管的 API 中的 EmailMessage 类以及由 EWS 中的 Message 元素及其子元素进行表示。

在 EWS 托管的 API 中, EmailMessage 对象由 Item 对象派生而来。 EmailMessage 类通过提供其他属性(如在几乎所有邮件方案中常见的 EmailMessage.SenderEmailMessage.IsRead)扩展 Item 类。 当您获取、更新或删除电子邮件时,在大多数情况下您可以通过使用 EmailMessage 对象或基 Item 对象来实现,具体取决于您正在使用的属性是在 EmailMessageSchema 中还是在 ItemSchema 类中。 项目的创建会由于 Item 类没有构造函数而有所不同,因此当您要创建一封电子邮件时,您将使用 EmailMessage 构造函数进行创建以及使用 EmailMessage.SaveEmailMessage.SendAndSaveCopy 方法来保存它,或发送并保存它。

同样,在 EWS 中使用 CreateItem 操作和 Message 元素来创建一封电子邮件。 若要通过使用 EWS 获取、更新或删除电子邮件,那么除了其他属性可用于电子邮件这一事实之外,正在进行修改的邮件是一封电子邮件的事实就显得不重要了。 用于其他强类型邮件的相同操作还可用于电子邮件。

任务 EWS 托管的 API 方法 EWS 操作
创建
EmailMessage.Save
CreateItem
获取
EmailMessage.Bind
GetItem
更新
Item.Update
UpdateItem
Delete
Item.Delete
DeleteItem

因为电子邮件只是强类型的邮件,所以在某些情况下您操作它们的方式与您操作常规邮件的方式是相同的。

使用 EWS 托管的 API 创建一封电子邮件

您可以通过使用 EWS 托管的 API Save 方法创建一封电子邮件,如以下示例的代码所示。 请注意,该示例仅将邮件保存在“草稿”文件夹中,不会发送此邮件。 有关如何发送邮件或一键创建并发送邮件的信息,请参阅使用 Exchange 中的 EWS 发送电子邮件

此示例假定 service 是有效的 ExchangeService 对象,且用户已通过 Exchange 服务器的身份验证。

// Create a new email message.
EmailMessage message = new EmailMessage(service);
// Set properties on the email message.
message.ToRecipients.Add("mack@contoso.com");
message.Subject = "Project priorities";
message.Body = "(1) Buy pizza, (2) Eat pizza";
// Save the email message to the Drafts folder (where it can be retrieved, updated, and sent at a later time).
// This method call results in a CreateItem call to EWS.
message.Save(WellKnownFolderName.Drafts);
Console.WriteLine("A draft email message with the subject '" + message.Subject + "' has been saved to the Drafts folder.");

使用 EWS 创建一封电子邮件

您可以通过使用 EWS CreateItem 操作创建一封电子邮件,如以下示例所示。 这也是当您 创建电子邮件时,EWS 托管的 API 将发送的 XML 请求。 请注意,以下示例仅将邮件保存在“草稿”文件夹中,不会发送此邮件。 有关如何发送邮件或一键创建并发送邮件的信息,请参阅使用 Exchange 中的 EWS 发送电子邮件

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2010_SP2" />
  </soap:Header>
  <soap:Body>
    <m:CreateItem MessageDisposition="SaveOnly">
      <m:SavedItemFolderId>
        <t:DistinguishedFolderId Id="drafts" />
      </m:SavedItemFolderId>
      <m:Items>
        <t:Message>
          <t:Subject>Project priorities</t:Subject>
          <t:Body BodyType="HTML">(1) Buy pizza, (2) Eat pizza</t:Body>
          <t:ToRecipients>
            <t:Mailbox>
              <t:EmailAddress>mack@contoso.com</t:EmailAddress>
            </t:Mailbox>
          </t:ToRecipients>
        </t:Message>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

服务器使用 CreateItemResponse 邮件响应 CreateItem 请求,其中包括 ResponseCodeNoError(表示电子邮件创建成功)和新创建邮件的 ItemId

通过使用 EWS 托管的 API 获取、更新和删除电子邮件

EWS 托管的 API 可以用于获取、更新或删除电子邮件,其操作方法与对 Exchange 存储中的任何常规项目执行这些操作的方法相同。 有关详细信息,请参阅使用 Exchange 中的 EWS 处理 Exchange 邮箱项目

如果您要更新电子邮件,请参阅在 Exchange 电子邮件属性和 EWS 中的元素,了解可写的电子邮件属性的列表。 若要在更新后发送草稿邮件,请参阅通过使用 EWS 托管的 API 发送草稿电子邮件

通过使用 EWS 获取、更新和删除电子邮件

EWS 可以用于获取、更新和删除电子邮件,其操作方法与对 Exchange 存储中的任何常规项目执行这些操作的方法相同。 有关详细信息,请参阅使用 Exchange 中的 EWS 处理 Exchange 邮箱项目

如果您要更新电子邮件,请参阅在 Exchange 电子邮件属性和 EWS 中的元素,了解可写的电子邮件属性的列表。 若要在更新后发送草稿邮件,请参阅通过使用 EWS 发送草稿电子邮件

本节内容

另请参阅