DEV Community

スシロー
スシロー

Posted on

【2026】Mailchimp 代替のトランザクションメールAPI:料金・移行コストで選ぶ

結論(おすすめ1つ)

Resend に乗り換えるべきだ。

Mailchimp Transactional(旧 Mandrill)から移行する場合、現時点で開発者体験・SDK の品質・デバッグのしやすさにおいて Resend が最もバランスが取れている。React Email との統合によりテンプレートをコードで管理でき、Git 管理・レビュー・CI/CD への組み込みがそのまま機能する。Webhook の設計や API レスポンスの一貫性も高く、移行後の運用コストが下がりやすい。


比較表(料金/無料枠/移行コスト/対応言語)

サービス 無料枠 従量単価 移行コスト 主要 SDK
Resend あり(月間送信上限あり) 公式の料金ページで要確認 低(シンプルな REST API) Node/Python/Go/Ruby/PHP/Rust など
SendGrid (Twilio) あり(日次上限あり) 公式の料金ページで要確認 中(設定項目が多い) Node/Python/PHP/Java/C#/Go/Ruby
Postmark 開発用テストクレジットあり 公式の料金ページで要確認 低〜中 Node/Python/PHP/Ruby/.NET/Go
Mailgun 試用期間あり(日次上限付き) 公式の料金ページで要確認 Node/Python/PHP/Java/Ruby/Go
Amazon SES AWS 無料利用枠に準ずる 公式の料金ページで要確認 高(IAM/DNS 設定が複雑) AWS SDK 全言語対応

無料枠の上限や正確な従量単価は変更されやすいため、必ず各サービスの公式料金ページで最新情報を確認すること。


移行手順

1. 送信ドメインの SPF/DKIM 設定

Mailchimp Transactional から抜けた直後は DNS 設定を引き継げない。Resend の管理画面でドメインを追加し、表示された TXT レコードを DNS プロバイダに登録する。

# 設定後、dig で確認する例(Linux/macOS)
dig TXT yourdomain.com +short

# Windows の場合
Resolve-DnsName -Name yourdomain.com -Type TXT
Enter fullscreen mode Exit fullscreen mode

伝播には最大 72 時間かかる。本番切り替え前に staging ドメインで検証を済ませること。

2. SDK のインストール

# Node.js
npm install resend

# Python
pip install resend

# Go
go get github.com/resendlabs/resend-go
Enter fullscreen mode Exit fullscreen mode

3. 環境変数の設定

# .env
RESEND_API_KEY=re_xxxxxxxxxxxx
FROM_EMAIL=noreply@yourdomain.com
Enter fullscreen mode Exit fullscreen mode

4. 送信コードの置き換え

Mailchimp Transactional(Mandrill)からの移行例:

// Before: Mailchimp Transactional (Mandrill)
const mailchimp = require("@mailchimp/mailchimp_transactional")(
  process.env.MANDRILL_API_KEY
);
await mailchimp.messages.send({
  message: {
    from_email: process.env.FROM_EMAIL,
    to: [{ email: "user@example.com", type: "to" }],
    subject: "注文確認",
    html: "<p>ご注文ありがとうございます</p>",
  },
});

// After: Resend
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_API_KEY);

await resend.emails.send({
  from: process.env.FROM_EMAIL,
  to: ["user@example.com"],
  subject: "注文確認",
  html: "<p>ご注文ありがとうございます</p>",
});
Enter fullscreen mode Exit fullscreen mode

5. Webhook の移行

Mailchimp Transactional のイベント Webhook(hard_bounce, soft_bounce, spam など)を Resend のイベント名に読み替えて再設定する。

// Express での Webhook 受信例
app.post("/webhook/email", express.json(), (req, res) => {
  const { type, data } = req.body;
  if (type === "email.bounced") {
    // バウンスアドレスを DB から除外する処理
    handleBounce(data.to);
  }
  res.status(200).send("ok");
});
Enter fullscreen mode Exit fullscreen mode

6. テスト送信と監視

# curl でのスモークテスト
curl -X POST https://api.resend.com/emails \
  -H "Authorization: Bearer $RESEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "test@yourdomain.com",
    "to": ["yourtest@example.com"],
    "subject": "migration smoke test",
    "text": "ok"
  }'
Enter fullscreen mode Exit fullscreen mode

レスポンスの id フィールドをログに記録し、管理画面のイベントログと突合してから本番切り替えを行う。


向き不向き

Resend が向くケース

  • TypeScript/Node.js をメインスタックとするチーム
  • React Email でテンプレートをコード管理したい場合
  • 月間送信量が無料枠に収まるスタートアップや個人開発者
  • 既存の Mailchimp Transactional コードがシンプルで、依存が少ない場合
  • CI/CD パイプラインにメールテンプレートのレビューを組み込みたいチーム

Resend を避けるべきケース

  • 月間送信数が大規模(数百万通単位)でコスト試算が最優先の場合 → Amazon SES を検討
  • .NET や Java がメインで SendGrid の既存インテグレーションが多い場合
  • 高い配信速度保証(Postmark が得意とする即時配信)が SLA に含まれる場合
  • 既存の Mailgun 依存(SMTP relay 設定など)が深く、REST API 移行のコストが許容できない場合

共通の注意点

  • どのサービスへ移行する場合も、バウンス・スパム報告の Webhook 処理は必ず実装すること。未処理のまま同一アドレスへ送り続けるとドメインレピュテーションが下がり、最終的に全サービスで到達率が低下する。
  • Mailchimp Transactional は Mailchimp アカウントに紐付いているため、解約前に API ログと送信履歴を手動でエクスポートしておくこと。

Top comments (0)