Microsoft Graph 发送邮件过程概述

在 Microsoft Graph 中,转发、 replyreplyAllsendMail 方法都会在同一调用中创建并发送电子邮件。 本文总结了 Outlook 和 Exchange Online 通常如何处理发送邮件 API 调用来发送邮件。 大多数步骤 (步骤 2 到 7) 在返回方法响应后发生。

1. 在发件人的邮箱中创建新邮件

Outlook 在发件人的“草稿”文件夹中创建新邮件,将邮件内容、收件人和附件从 JSON 请求复制到草稿邮件,并保存它。 如果成功,该方法将返回 HTTP 响应 202 Accepted 状态代码。

如果发件人提供了 MIME 内容,则 Exchange Online 会将其复制到新草稿邮件中的单个属性。 然后,Exchange Online 分析 MIME 内容,并将相关内容复制到邮件属性以及收件人和附件表。 完成后,该方法将 202 Accepted 返回状态代码。

由于发件人的邮箱已满或与发件人服务器的网络连接中断等原因,此步骤可能会失败。 如果方法失败,它将相应地返回 4xx 或 5xx 状态代码。

步骤 1 完成后,应用与 Microsoft Graph 的直接交互将结束。

2. 通知传输服务新的出站消息

Exchange Online 通知其传输服务,新邮件可供取件。

3. 将出站消息复制到传输管道

传输过程从发件人的邮箱中读取邮件内容,将其转换为 MIME 格式,并将其存储在传输管道中。 如果发送方提供了 MIME 内容,则传输过程将复制 MIME 内容或多或少保持不变。 否则,传输过程将序列化消息属性以构造 MIME 内容。

如果步骤 3 失败,传输过程将构造未送达报告邮件并将其放入发件人的收件箱中。

4. 将原始邮件移动到“已发送邮件”文件夹

完成所有这些操作后,传输将调用回存储,以承担对消息的责任。 作为响应,Exchange 存储会更新邮件,并将其从“草稿”文件夹移动到“已发送邮件”文件夹。 (根据可选邮件属性,它可能会移动到其他文件夹或删除邮件。)

5. 执行策略评估和路由

传输采取的后续步骤包括策略强制实施、路由和下一跃点传递。 传输检查收件人电子邮件地址,并根据初始路由跃点对其进行存储。 此时,传输检测到无效的收件人地址,传输邮件会将未送达邮件报告给发件人。 然后,传输将应用租户管理员配置的策略。 此类策略可能会基于邮件的内容、存储副本等拒绝邮件。 应用策略后,传输会将消息的副本扇出到每个下一跃点目标。 有关传输流的更多详细信息,请参阅 邮件流和传输管道

6. 向收件人传递邮件

Exchange Online 传输可能负责也可能不负责最终交付给所有收件人。 这取决于这些收件人是否具有 Exchange Online 邮箱。

7. 将报告邮件传递给发件人

一些服务涉及生成传递报告并相应地将其发送给发件人:

  • 当负责任的传输组件(可以是 Exchange Online 或非 Exchange Online 组件)确定一个或多个收件人电子邮件地址不可送达时,该组件将生成未送达报告。
  • 同时,如果发送方显式请求,传输组件会生成传递报告。
  • 收件人的电子邮件服务或电子邮件客户端可能会生成已读和非读通知,或者根本不生成。

有关报表邮件的详细信息,请参阅 Exchange Server 中的 DSN 和NDR

在单独的调用中创建和发送草稿的 Microsoft Graph API: