コンテンツにスキップ

労働者からのメールへの返信

受信したメールに新しいメッセージで返信し、メッセージの本文に任意のコンテンツやコンテキストを追加してスマートな自動応答をプログラム的に実装できます。顧客サポートのメールが自動的にチケットを生成し、送信者にリンクを返す、休暇中の指示を含む不在通知、またはメールを拒否した理由の詳細な説明を考えてみてください。

メールへの返信は、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()は例外を伴って失敗しますが、そうでなければ自由に返信メッセージを作成し、元の送信者に返送できます。