ドキュメント本文へスキップ
API

テンプレートで送信する

保存された本文がメッセージを供給し、リクエストがエンベロープと値を供給します。

POSTapi.openemail.uk/templates/{id}/send

実際の呼び出しを、ご自身のキーで自分のワークスペースに対して実行します。

POST /templates/{id}/send

保存された本文がメッセージを供給し、リクエストがエンベロープと値を供給します。

templates:writeemails:send の両方が必要です。Idempotency-KeyPOST /emails とまったく同じように扱われます。

curl
curl -X POST "$OE/templates/order-shipped/send" -H "$AUTH" \  -H "Content-Type: application/json" -H "Idempotency-Key: order:AC-4192:shipped" \  -d '{    "from": "Acme Dispatch <[email protected]>",    "to": ["[email protected]"],    "version": 5,    "props": { "orderId": "AC-4192", "customer": "Ada" }  }'
レスポンス
{  "object": "email",  "id": "msg_c5f21cc6…",  "status": "queued",  "from": "[email protected]",  "subject": "Order AC-4192 is on its way",  "template": { "id": "order-shipped", "version": 5 }}

両方のスコープが必要で、どちらも冗長ではありません。呼び出し側が保存された本文に触れるので templates:write、メールがワークスペースの外へ出るので emails:send です。自分の本文を送ってよいキーでも、他人のテンプレートを送ることはできません。

自動化されたものの中では version を固定してください。省略するとその時点で公開されているものが解決されます。文面を他人が所有しているときはそれが望ましく、その人が書き直した朝には望ましくありません。

subject はこのメッセージに限ってテンプレート自身の件名を上書きします。cancellableForSecondstrackingtags は通常の送信とまったく同じように振る舞います。

POST /emails にも同じことをする template フィールドがあり、すでにそちらでメッセージを組み立てている呼び出し側のためのものです。このエンドポイントが存在するのは、保存された本文に触れるために、自分が作文していないメッセージの形を用意しなくて済むようにするためです。

送信が拒否される場合

props は提案ではなく契約であり、以下の失敗はすべて何かが送出される前に起こります。代わりの結末、つまり注文番号のあるべき場所が空白のままメールが出ていくことは、何からも報告されず、取り消すこともできません。

コードステータス何が起きたか
`resource_not_found`404この接続には、その id または slug を持つテンプレートがありません。
`template_not_published`422テンプレートは存在するが一度も公開されていないか、指定したバージョンがまだ下書きです。
`template_version_not_found`422このテンプレートが持ったことのない version を固定しました。
`missing_template_prop`422required と宣言された prop が、欠けているか null か空でした。
`unknown_template_prop`422そのバージョンが宣言していないキーを渡しました。メッセージには宣言済みのキーが列挙されます。
`unknown_template_slot`422同じことがスロットについて起きた場合です。
`invalid_template_prop`422string でも number でも boolean でもない値です。object や array を HTML に差し込むことはできません。

これらの paramtemplate.props.<key> なので、クライアントはメッセージをパースしなくても、間違えたフィールドを指し示せます。