コンテンツにスキップ

Resendを使ってメールを送信する

Last reviewed: 5 months ago

このチュートリアルでは、Resendを使用してWorkersからトランザクションメールを送信する方法を学びます。このチュートリアルの最後には、以下のことができるようになります:

  • メールを送信するためのWorkerを作成する。
  • ResendにCloudflareドメインを追加してサインアップする。
  • Resendを使用してWorkerからメールを送信する。
  • シークレットを使ってAPIキーを安全に保存する。

前提条件

このチュートリアルを続けるには、以下が必要です:

Workerプロジェクトの作成

まず、C3を使用してコマンドラインでWorkerプロジェクトを作成し、プロンプトに答えます:

Terminal window
npm create cloudflare@latest

または、CLI引数を使用して作業をスピードアップすることもできます:

Terminal window
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にドメインを追加する

まだResendアカウントを持っていない場合は、こちらから無料アカウントにサインアップできます。サインアップ後、サイドメニューを使用してDomainsに移動し、新しいドメインを追加するボタンをクリックします。モーダルで追加したいドメインを入力し、地域を選択します。

次に、Cloudflareドメインに追加するDNSレコードのリストが表示されます。Cloudflareダッシュボードで、先ほど入力したドメインを選択し、DNS > Recordsに移動します。ResendからCloudflareドメインにDNSレコード(DKIM、SPF、DMARCレコード)をコピー&ペーストします。

CloudflareドメインにDNSレコードを追加する画像

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

Resendダッシュボードでのドメイン検証画像

最後に、サイドメニューを使ってAPI Keysに移動し、APIキーを作成します。キーに説明的な名前を付け、適切な権限を設定します。キーを追加するボタンをクリックし、APIキーを安全な場所にコピーします。

Workerからメールを送信する

最後のステップは、すべてをWorkerにまとめることです。先ほど作成したWorkerのディレクトリでターミナルを開きます。次に、Resend SDKをインストールします:

Terminal window
npm i resend

Worker内で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/に移動します:

Terminal window
npm start

Workerをデプロイするには、npm run deployを実行します。

APIキーをシークレットに移動する

APIキーやトークンなどの機密情報は常にシークレットに保存する必要があります。すべてのシークレットは暗号化されており、追加の保護層を提供します。したがって、APIキーをシークレットに移動し、Workerの環境からアクセスすることをお勧めします。

ローカル開発用にシークレットを追加するには、.envファイルと同様に機能する.dev.varsファイルを作成します:

RESEND_API_KEY=your_resend_api_key

また、デプロイされたWorkerにシークレットが追加されていることを確認するために、次のコマンドを実行します:

デプロイされた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でデプロイします。

関連リソース