労働者からのメールへの返信
受信したメールに新しいメッセージで返信し、メッセージの本文に任意のコンテンツやコンテキストを追加してスマートな自動応答をプログラム的に実装できます。顧客サポートのメールが自動的にチケットを生成し、送信者にリンクを返す、休暇中の指示を含む不在通知、またはメールを拒否した理由の詳細な説明を考えてみてください。
メールへの返信は、Runtime APIのEmailMessageオブジェクトの新しいメソッドです。動作は以下の通りです:
import { EmailMessage } from "cloudflare:email";import { createMimeMessage } from "mimetext";
export default { async email(message, env, ctx) {
const ticket = createTicket(message);
const msg = createMimeMessage(); msg.setHeader("In-Reply-To", message.headers.get("Message-ID")); msg.setSender({ name: "ご連絡ありがとうございます", addr: "<SENDER>@example.com" }); msg.setRecipient(message.from); msg.setSubject("メールルーティング自動返信"); msg.addMessage({ contentType: 'text/plain', data: `メッセージを受け取りました。あなたのチケット番号は ${ ticket.id } です` });
const replyMessage = new EmailMessage( "<SENDER>@example.com", message.from, msg.asRaw() );
await message.reply(replyMessage); }}セキュリティリスクと悪用を軽減するために、受信メールへの返信にはいくつかの要件があります:
- 受信メールは有効なDMARC ↗を持っている必要があります。
- 同じ
EmailMessageイベント内でメールには一度だけ返信できます。 - 返信メッセージの
In-Reply-Toヘッダーは、受信メッセージのMessage-IDに設定する必要があります。 - 返信の受取人は受信者と一致する必要があります。
- 送信者のドメインは、メールを受信したのと同じドメインである必要があります。
これらの条件やその他の内部条件が満たされない場合、reply()は例外を伴って失敗しますが、そうでなければ自由に返信メッセージを作成し、元の送信者に返送できます。