Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Postmark でメールを送信する

最終更新 Markdown で表示Agent セットアップ

このチュートリアルでは、Workers から Postmark を使ってトランザクションメールを送信する方法を学びます。完了すると、次のことができるようになります。

  • メールを送信する Worker を作成する。
  • アカウントを作成し、Cloudflare ドメインを Postmark に追加する。
  • Worker から Postmark を使ってメールを送信する。
  • API キーを secrets で安全に保存する。

前提条件

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

Worker プロジェクトを作成する

まずコマンドラインで C3 を使い、Worker プロジェクトを作成します。表示されるプロンプトに答えます。

npm create cloudflare@latest

時間を短縮したい場合は、CLI 引数を使えます。

npm create cloudflare@latest email-with-postmark -- --type=hello-world --ts=false --git=true --deploy=false

次の内容の、シンプルな hello-world Worker が作成されます。

export default {
	async fetch(request, env, ctx) {
		return new Response("Hello World!");
	},
};

ドメインを Postmark に追加する

Postmark アカウントをまだ持っていない場合は、無料アカウントに登録 できます。登録後、受信トレイで sender signature(送信者署名)の確認リンクを開きます。これで本人確認が済み、登録したメールアドレスからメールを送信できるようになります。

ドメイン上のほかのアドレスからも送信できるようにするには、Postmark ダッシュボードの Sender Signatures へ進み、Add Domain or Signature > Add Domain を選び、ドメインを入力して Verify Domain をクリックします。

次に、Cloudflare ドメインへ追加する DNS レコードの一覧が表示されます。Cloudflare ダッシュボードで、先ほど入力したドメインを選び、DNS > Records へ進みます。Postmark の DNS レコード(DKIM と Return-Path)を、Cloudflare ドメインへコピーして貼り付けます。

Cloudflare ドメインへ DNS レコードを追加する画面

完了したら Postmark に戻り、Verify ボタンをクリックします。すべてのレコードが正しく設定されていれば、ドメインのステータスは Verified に更新されます。

Postmark ダッシュボードでのドメイン検証画面

API トークンを取得するには、Servers タブから My First Server > API Tokens へ進み、API キーを安全な場所にコピーします。

Worker からメールを送信する

最後に、Worker にまとめます。Worker 内で fetch を使い、Postmark のメール API へ POST リクエストを送ります。トークンとメッセージ本文を含めます。

export default {
	async fetch(request, env, ctx) {
		return await fetch("https://api.postmarkapp.com/email", {
			method: "POST",
			headers: {
				"Content-Type": "application/json",
				"X-Postmark-Server-Token": "your_postmark_api_token_here",
			},
			body: JSON.stringify({
				From: "[email protected]",
				To: "[email protected]",
				Subject: "Hello World",
				HtmlBody: "<p>Hello from Workers</p>",
			}),
		});
	},
};

ローカルでコードを試すには、次のコマンドを実行し、ブラウザーで http://localhost:8787/ を開きます。

npm start

npm run deploy で Worker をデプロイします。

API トークンを Secrets へ移す

API キーやトークンなどの機密情報は、必ず secrets に保存してください。secrets はすべて暗号化され、保護が一段厚くなります。そのため、API トークンは secret に移し、Worker の環境から参照することをおすすめします。

ローカル開発用の secrets を追加するには、.env と同じように動作する .dev.vars ファイルを作成します。

POSTMARK_API_TOKEN=your_postmark_api_token_here

デプロイ済み Worker にも secret を追加するには、次を実行します。

デプロイ済み Worker に secret を追加するsh
npx wrangler secret put POSTMARK_API_TOKEN

追加した secret は、Worker の fetch イベントハンドラーに渡される env パラメーターから参照できます。

export default {
	async fetch(request, env, ctx) {
		return await fetch("https://api.postmarkapp.com/email", {
			method: "POST",
			headers: {
				"Content-Type": "application/json",
				"X-Postmark-Server-Token": env.POSTMARK_API_TOKEN,
			},
			body: JSON.stringify({
				From: "[email protected]",
				To: "[email protected]",
				Subject: "Hello World",
				HtmlBody: "<p>Hello from Workers</p>",
			}),
		});
	},
};

最後に、npm run deploy でこの更新をデプロイします。

関連リソース

役に立ちましたか?