

個人開発でメール認証機能を実装する際、メール送信サービスの選定とドメイン設定が必要になります。Resend は開発者フレンドリーな API を提供しており、Cloudflare と組み合わせることで驚くほどスムーズにセットアップできます。
Resend はドメイン未認証の状態ではアカウントのメールアドレスにしか送信できません。誰にでもメールを送るには独自ドメインの認証が必須です。
Cloudflare でのドメイン取得方法
Resend でのドメイン認証手順(DKIM / SPF)
Cloudflare の DNS 設定方法
Resend の無料プランの制限と活用法
TypeScript でのメール送信コード例
個人開発でメール送信機能を実装したい方
Resend を使ってみたいが、ドメイン設定がわからない方
Resend アカウント(無料プランでOK)
Cloudflare アカウント
Resend の無料プランの制限:
月 3,000 通まで送信可能
1日 100 通まで
カスタムドメイン 1 つ
Cloudflare ダッシュボード → 「ドメインの登録」
希望のドメイン名を検索して購入
購入完了 → DNS 管理が自動で Cloudflare に設定される
Resend ダッシュボード → Domains → 「Add Domain」
ドメイン名を入力
Region を選択(日本なら Tokyo / ap-northeast-1)
DNS Records に設定すべきレコードが表示される
Resend が表示する 3 つの DNS レコードを Cloudflare に追加します:
Resend側でcloudflareへの遷移ボタンが出てくるのでそれを押すと下記の項目も追加する画面に直接遷移します。なので深く考える必要はないはずです。
MX - Name: send / Content: feedback-smtp.ap-northeast-1.amazonses.com / Priority: 10
TXT - Name: send / Content: v=spf1 include:amazonses.com ~all
Resend の Domains ページで Verify をクリック。全てのレコードが Verified になれば完了です。
Cloudflare の場合、DNS 反映がほぼリアルタイムで完了するため、追加後すぐに認証が通りました。他のレジストラでは数時間かかることもあるので、この速さは大きなメリットです。
僕の時は五分くらいで完了しました。
npm install resend
# .env
RESEND_API_KEY=re_xxxxxxxxxxxx
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_API_KEY);
const FROM_EMAIL = "[email protected]";
export async function sendEmail(to: string, subject: string, html: string) {
const { error } = await resend.emails.send({
from: FROM_EMAIL,
to,
subject,
html,
});
if (error) {
console.error("Failed to send email:", error);
throw new Error("メールの送信に失敗しました");
}
}
「You can only send testing emails to your own email address」→ ドメイン未認証です。認証を完了させてください。
Cloudflare Proxy が DNS Only になっているか確認
Name / Content が正確にコピーされているか確認
Resend 無料プランでも月 3,000 通送信可能(ドメイン認証必須)
Cloudflare × Resend は DNS 反映が速くシームレスにセットアップできる
必要な DNS レコードは DKIM(TXT)と SPF(MX + TXT)の 3 つ
ドメイン取得から認証完了・メール送信まで約 10 分で完了