惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
GbyAI
GbyAI
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
B
Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
雷峰网
雷峰网
爱范儿
爱范儿
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
P
Proofpoint News Feed
A
About on SuperTechFans
I
InfoQ
F
Fortinet All Blogs
L
LangChain Blog
T
Tailwind CSS Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
【2026】Mailchimp 代替のトランザクションメールAPI:料金・...
スシロー · 2026-06-15 · via DEV Community

スシロー

結論(おすすめ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

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

2. SDK のインストール

# Node.js
npm install resend

# Python
pip install resend

# Go
go get github.com/resendlabs/resend-go

3. 環境変数の設定

# .env
RESEND_API_KEY=re_xxxxxxxxxxxx
FROM_EMAIL=noreply@yourdomain.com

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>",
});

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");
});

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"
  }'

レスポンスの 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 ログと送信履歴を手動でエクスポートしておくこと。