Cloudflare Email Service を使い、アプリケーションからメールを送信します。Cloudflare Workers 上のアプリケーションには Workers バインディング、任意のプラットフォームからは REST API、SMTP 対応のアプリケーションやメールクライアントからは SMTP を使えます。
Email Sending を使う前に、ドメインを設定します。
-
Cloudflare ダッシュボードで、Compute > Email Service > Email Sending に移動します。
Email Sending を開く ↗ -
Onboard Domain を選択します。
-
Cloudflare アカウントのドメインを選びます。任意で、Cloudflare がドメインの
cf-bounceサブドメインに追加する DNS レコードを確認します。- バウンスメールを Cloudflare へルーティングする MX レコード。
- メール送信を認可する SPF 用の TXT レコード。
- ドメインから送信するメールを認証する DKIM 用の TXT レコード。
_dmarc.yourdomain.comの DMARC 用 TXT レコード。
-
Done を選択します。
ドメインのオンボードが完了したら、メールの送信を開始できます。
Workers バインディング、REST API、または SMTP で最初のメールを送信できます。
Cloudflare Workers 上で構築している場合は、ネイティブなメール送信に Workers バインディングを使えます。まず新しい Worker プロジェクトを作成します。
-
新しい Worker プロジェクトを作成します。
npm create cloudflare@latest -- email-service-tutorialyarn create cloudflare email-service-tutorialpnpm create cloudflare@latest email-service-tutorialプロンプトが表示されたら、テンプレートとして "Hello World" Worker を選択します。
-
Wrangler 設定ファイルに email バインディングを追加します。
{ "send_email": [ { "name": "EMAIL", "remote": true, }, ], }[[send_email]] name = "EMAIL" remote = true -
src/index.tsに Worker のコードを作成します。// Configuration - Update these values const YOUR_DOMAIN = "yourdomain.com"; // Replace with your verified domain const RECIPIENT_EMAIL = "[email protected]"; // Replace with your email to receive test emails export default { async fetch(request: Request, env: Env): Promise<Response> { // Send a welcome email const response = await env.EMAIL.send({ to: RECIPIENT_EMAIL, from: `welcome@${YOUR_DOMAIN}`, subject: "Welcome to our service!", html: "<h1>Welcome!</h1><p>Thanks for signing up.</p>", text: "Welcome! Thanks for signing up.", }); return new Response(`Email sent: ${response.messageId}`); }, } satisfies ExportedHandler<Env>; -
npx wrangler devで Worker プロジェクトを開発し、メールを送信します。コードはローカルで動き、Cloudflare Email Service に接続します(リモートバインディング を使用)。npx wrangler dev # ⎔ Starting remote preview... # Total Upload: 24.96 KiB / gzip: 6.17 KiB # [wrangler:info] Ready on http://localhost:8787 -
Worker をデプロイします。
npm run deploy
デプロイ後、Worker がメールを送信できることを確認します。
- ブラウザーで Worker の URL を開きます(デプロイ出力に表示されます。例:
https://email-service-tutorial.<your-subdomain>.workers.dev)。 Email sent: <message-id>のようなレスポンスが表示されます。RECIPIENT_EMAILに指定したメールアドレスの受信箱を確認します。メールが見当たらない場合は、迷惑メールフォルダーも確認します。
curl コマンド 1 つでメールを送信します。{account_id} を Cloudflare アカウント ID に、<API_TOKEN> を API トークン に置き換えます。
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"to": "[email protected]",
"from": "[email protected]",
"subject": "Welcome to our service!",
"html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>",
"text": "Welcome! Thanks for signing up."
}'成功時のレスポンスには、各受信者の配信状態が含まれます。
{
"success": true,
"errors": [],
"messages": [],
"result": {
"delivered": ["[email protected]"],
"permanent_bounces": [],
"queued": []
}
}詳細は REST API リファレンス を参照してください。
curl コマンド 1 つでメールを送信します。<API_TOKEN> を Email Sending: Edit 権限のある Cloudflare API トークン に置き換え、--mail-from と --mail-rcpt のアドレスも自分のものに置き換えます。
cat > mail.txt <<EOF
From: [email protected]
To: [email protected]
Subject: Welcome to our service!
Thanks for signing up.
EOF
curl --ssl-reqd \
--url "smtps://smtp.mx.cloudflare.net:465" \
--user "api_token:<API_TOKEN>" \
--mail-from "[email protected]" \
--mail-rcpt "[email protected]" \
--upload-file mail.txt送信元ドメイン([email protected])は、API トークンを所有するアカウントで Email Sending にオンボードされている必要があります。
接続の詳細、認証、応答コード、言語別の例は、SMTP リファレンス を参照してください。
メールを送信できるようになったら、高度な機能を確認します。
- 受信メールをルーティングする - ドメイン宛てのメールを処理する
- API リファレンス - API の完全なドキュメント
- 例 - 実務向けの実装パターン