使用触发器电子邮件扩展程序管理传送状态

当某个文档被添加到集合之后,扩展程序会选取该文档进行电子邮件传送处理。在处理电子邮件时,此扩展程序会在文档中创建并更新一个 delivery 字段。

电子邮件传送处理

可以使用以下字段填充 delivery 字段:

  • statePENDINGPROCESSINGSUCCESSERROR 之一。
  • startTime::电子邮件处理开始时间的时间戳。
  • endTime::电子邮件处理完成(即以 SUCCESSERROR 状态结束)时间的时间戳。
  • error:如果发生电子邮件传送错误,此处会填充错误消息。
  • attempts:尝试传送此电子邮件的次数。
  • leaseExpireTime:如果挂起或超时,则处于 PROCESSING 状态的时间应被视为错误。
  • info:成功传送电子邮件(至少发送至一个地址)后,系统将使用以下字段填充此字段:
    • messageId:已传送的电子邮件的邮件 ID。
    • accepted:已将电子邮件成功传送到的电子邮件地址数组。
    • rejected:电子邮件无法传送到的电子邮件地址数组。
    • pending:SMTP 暂时拒绝的电子邮件地址数组。
    • response:来自 SMTP 服务器的最后响应。

电子邮件通常从 PENDING 发送至 PROCESSING,然后再发送至 SUCCESSERROR。一旦进入 SUCCESSERROR 状态,对文档进行的其他更改将不会触发扩展程序发送另一封电子邮件。要重新发送包含文档更新的电子邮件,您可以将 state 更改为 PENDINGRETRY

手动重试

在某些情况下,电子邮件在传送失败之后可以恢复,或者只需对文档进行少量的手动修改即可更正并正确传送。虽然重试不是自动进行的,但您可以手动将 delivery 字段中的 state 更改为 RETRY,以便扩展程序再次尝试传送电子邮件(并增加 attempts 的数量)。