Resendを使ってメールを送信する
このチュートリアルでは、Resend ↗を使用してWorkersからトランザクションメールを送信する方法を学びます。このチュートリアルの最後には、以下のことができるようになります:
- メールを送信するためのWorkerを作成する。
- ResendにCloudflareドメインを追加してサインアップする。
- Resendを使用してWorkerからメールを送信する。
- シークレットを使ってAPIキーを安全に保存する。
このチュートリアルを続けるには、以下が必要です:
- すでに持っていない場合は、Cloudflareアカウント ↗。
- 登録済みのドメイン。
- npm ↗がインストールされていること。
- Resendアカウント ↗。
まず、C3を使用してコマンドラインでWorkerプロジェクトを作成し、プロンプトに答えます:
npm create cloudflare@latestまたは、CLI引数を使用して作業をスピードアップすることもできます:
npm create cloudflare@latest email-with-resend -- --type=hello-world --ts=false --git=true --deploy=falseこれにより、以下の内容を持つシンプルなhello-world Workerが作成されます:
export default { async fetch(request, env, ctx) { return new Response("Hello World!"); },};まだResendアカウントを持っていない場合は、こちらから無料アカウントにサインアップ ↗できます。サインアップ後、サイドメニューを使用してDomainsに移動し、新しいドメインを追加するボタンをクリックします。モーダルで追加したいドメインを入力し、地域を選択します。
次に、Cloudflareドメインに追加するDNSレコードのリストが表示されます。Cloudflareダッシュボードで、先ほど入力したドメインを選択し、DNS > Recordsに移動します。ResendからCloudflareドメインにDNSレコード(DKIM、SPF、DMARCレコード)をコピー&ペーストします。

それが完了したら、Resendに戻り、Verify DNS Recordsボタンをクリックします。すべてのレコードが正しく構成されていれば、ドメインのステータスがVerifiedに更新されるはずです。

最後に、サイドメニューを使ってAPI Keysに移動し、APIキーを作成します。キーに説明的な名前を付け、適切な権限を設定します。キーを追加するボタンをクリックし、APIキーを安全な場所にコピーします。
最後のステップは、すべてをWorkerにまとめることです。先ほど作成したWorkerのディレクトリでターミナルを開きます。次に、Resend SDKをインストールします:
npm i resendWorker内でResendライブラリを次のようにインポートして使用します:
import { Resend } from "resend";
export default { async fetch(request, env, ctx) { const resend = new Resend("your_resend_api_key");
const { data, error } = await resend.emails.send({ from: "hello@example.com", to: "someone@example.com", subject: "Hello World", html: "<p>Hello from Workers</p>", });
return Response.json({ data, error }); },};ローカルでコードをテストするには、次のコマンドを実行し、ブラウザでhttp://localhost:8787/ ↗に移動します:
npm startWorkerをデプロイするには、npm run deployを実行します。
APIキーやトークンなどの機密情報は常にシークレットに保存する必要があります。すべてのシークレットは暗号化されており、追加の保護層を提供します。したがって、APIキーをシークレットに移動し、Workerの環境からアクセスすることをお勧めします。
ローカル開発用にシークレットを追加するには、.envファイルと同様に機能する.dev.varsファイルを作成します:
RESEND_API_KEY=your_resend_api_keyまた、デプロイされたWorkerにシークレットが追加されていることを確認するために、次のコマンドを実行します:
npx wrangler secret put RESEND_API_KEY追加したシークレットは、Workerのfetchイベントハンドラーに渡されるenvパラメータを介してアクセスできます:
import { Resend } from "resend";
export default { async fetch(request, env, ctx) { const resend = new Resend(env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({ from: "hello@example.com", to: "someone@example.com", subject: "Hello World", html: "<p>Hello from Workers</p>", });
return Response.json({ data, error }); },};最後に、この更新をnpm run deployでデプロイします。