Trigger Email 拡張機能による配信ステータスの管理

この拡張機能は、ドキュメントがコレクションに追加されると、そのドキュメントを取得してメール配信を処理します。この拡張機能がメールを処理する際に、ドキュメントの delivery フィールドが作成または更新されます。

メール配信の処理

delivery フィールドには以下のフィールドが設定されます。

  • state: PENDINGPROCESSINGSUCCESSERROR のいずれか。
  • startTime: メールの処理が開始された時刻のタイムスタンプ。
  • endTime: メールの処理が完了した(SUCCESS または ERROR の状態になった)時刻のタイムスタンプ。
  • error: メール配信エラーが発生した場合は、ここにエラー メッセージが設定されます。
  • attempts: このメールの配信試行回数。
  • leaseExpireTime: ハングまたはタイムアウトが発生した場合に、PROCESSING 状態がエラーと見なされるようにする時刻。
  • info: 少なくとも 1 つのアドレスに対するメール配信が成功すると、このフィールドに以下のフィールドが設定されます。
    • messageId: 配信されたメールのメッセージ ID。
    • accepted: メールが正常に配信された宛先メールアドレスの配列。
    • rejected: メールを配信できなかった宛先メールアドレスの配列。
    • pending: SMTP によって一時的に拒否されたメールアドレスの配列。
    • response: SMTP サーバーからの最後のレスポンス。

通常、メールの状態は PENDING から PROCESSING になり、その後 SUCCESS または ERROR になります。SUCCESS または ERROR の状態になった後は、ドキュメントに変更を加えても、新たなメールの送信はトリガーされません。ドキュメントを更新してメールを再送信するには、statePENDING または RETRY に変更します。

手動での再試行

場合によっては、メール配信の失敗が回復可能なものであったり、ドキュメントを手動で簡単に修正することで正しく配信できたりすることがあります。再試行は自動的には行われませんが、delivery フィールドの state を手動で RETRY に変更すると、メールの配信が再試行されます(attempts の数値がインクリメントされます)。