ドメイン宛の受信メールを、既存のメールボックス、処理用の Workers、またはその他の宛先へルーティングします。
Email Routing を使う前に、ドメインを設定します。
-
Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。
Email Routing を開く ↗ -
Onboard Domain を選びます。
-
Cloudflare アカウントのドメインを選びます。任意で、Cloudflare がルートドメインに追加する DNS レコードを確認します。
- 受信メールを Cloudflare へルーティングする MX レコード。
- メールルーティングを許可するための SPF 用 TXT レコード。
- ルーティングしたメールを認証するための DKIM 用 TXT レコード。
-
Done を選びます。
ドメインのオンボードが完了すると、メールのルーティングを開始できます。
最初のメールは、ダッシュボードでルーティングルールを設定するか、Workers でメールを処理してルーティングできます。
メールをルーティングする最も簡単な方法は、既存のメールアドレスへ転送することです。
ルーティングルールを作成する前に、転送先となる宛先アドレスを追加して確認します。宛先アドレスはアカウント単位で管理し、複数のドメインで再利用できます。
-
Cloudflare ダッシュボードで Compute > Email Service > Email Routing > Destination Addresses を開きます。
Email Routing を開く ↗ -
Destination addresses で、宛先に使うメールアドレスをインラインフォームに入力して送信します。
-
Cloudflare がそのアドレスに送る確認メールを開き、Verify email address を選択します。
詳細は 宛先アドレスを追加する を参照してください。
-
Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。
Email Routing を開く ↗ -
メールアドレスを作成するドメインを選択します。
-
Routing Rules タブを選択します。
-
Create routing rule を選択します。
-
最初のルールを設定します(例:
support@yourdomain.com宛のメールを個人のメールアドレスへ転送する)。- Email pattern: メールのローカル部(
support@yourdomain.comならsupportなど)を入力し、ドメインを選択します - Action: Send to an email
- Destination: 個人のメールアドレス(
your-email@gmail.comなど)
- Email pattern: メールのローカル部(
-
Save を選択します。
ルーティングルールが動作することを確認します。
-
別のメールアカウントから、作成したアドレス(
support@yourdomain.comなど)へメールを送ります。宛先アドレスとは別のアカウントから送ってください。同じアカウントから自分宛に見えるメッセージを破棄するプロバイダーがあります。 -
宛先の受信トレイで、転送されたメールを確認します。
-
すぐに見当たらない場合は、迷惑メールフォルダーを確認します。
Workers を使い、転送や返信の前にカスタムロジックでメールを処理します。
-
新しい Worker プロジェクトを作成します。
npm create cloudflare@latest email-processorプロンプトではテンプレートとして "Hello World" Worker を選びます。その後、プロジェクトディレクトリへ移動します。
cd email-processor -
メール返信の作成に必要なパッケージをインストールします。
npm install mimetext -
Wrangler の設定ファイルに
nodejs_compat互換性フラグを追加します。mimetextパッケージに必要です。{ "compatibility_flags": ["nodejs_compat"], }compatibility_flags = [ "nodejs_compat" ] -
src/index.tsにメールハンドラーを作成します。import { EmailMessage } from "cloudflare:email"; import { createMimeMessage } from "mimetext"; // ============================================ // Configuration - Update these values // ============================================ const YOUR_DOMAIN = "yourdomain.com"; // Replace with your verified domain const FORWARD_TO_EMAIL = "your-team@example.com"; // Replace with where you want emails forwarded export default { async email(message, env, ctx): Promise<void> { const sender = message.from; const recipient = message.to; const subject = message.headers.get("subject") || ""; console.log( `Processing email from ${sender} to ${recipient} with subject ${subject}`, ); // Route based on recipient if (recipient.includes("support@")) { // Send auto-reply const msg = createMimeMessage(); const messageId = message.headers.get("Message-ID"); if (messageId) { msg.setHeader("In-Reply-To", messageId); msg.setHeader("References", messageId); } msg.setSender({ name: "Support Team", addr: `support@${YOUR_DOMAIN}`, }); msg.setRecipient(message.from); msg.setSubject(`Re: ${subject}`); // Add plain text version msg.addMessage({ contentType: "text/plain", data: "Thank you for contacting support. Your ticket number is 123.\n\nA member of our support team will get back to you shortly.", }); // Add HTML version msg.addMessage({ contentType: "text/html", data: "<p>Thank you for contacting support. Your ticket number is <strong>123</strong>.</p><p>A member of our support team will get back to you shortly.</p>", }); const replyMessage = new EmailMessage( `support@${YOUR_DOMAIN}`, message.from, msg.asRaw(), ); await message.reply(replyMessage); // Forward to support team await message.forward(FORWARD_TO_EMAIL); } else { // Default: forward to admin await message.forward(FORWARD_TO_EMAIL); } }, } satisfies ExportedHandler<Env>; -
Worker をデプロイします。
npm run deploy
-
Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。
Email Routing を開く ↗ -
ルーティングを設定するドメインを選択します。
-
Routing Rules タブを選択します。
-
Create routing rule を選択します。
-
Worker へのルーティングを設定します。
- Email pattern: メールのローカル部(
support@yourdomain.comならsupportなど)を入力し、ドメインを選択します - Action: Send to a Worker
- Worker:
email-processorWorker を選択します
- Email pattern: メールのローカル部(
-
Save を選択します。
ルーティングルールを設定したら、動作を確認します。
-
個人のメールアカウントから、設定したアドレス(
support@yourdomain.comなど)へメールを送ります。 -
FORWARD_TO_EMAILの受信トレイで、転送されたメールを確認します。 -
受信アドレスが
support@だった場合は、個人のメールアドレスにも自動返信が届きます。
メールをルーティングできるようになったら、高度な機能を確認してください。
- 送信メールを送る - アプリケーションからメールを送信します
- API リファレンス - ルーティング API の完全なドキュメント
- Examples - 実務で使えるルーティングのパターン