結論(おすすめ1つ)
Resend に乗り換えることを推奨する。
理由は3点。①REST APIの設計が極めてシンプルで、curl1行から動作確認できるため、既存コードへの統合コストが最も低い。②Node.js/Python/Go/Ruby/PHP/Javaなど主要言語のSDKが公式提供されており、チームのスタック問わず採用しやすい。③Mailchimpのトランザクション機能(旧Mandrill)と異なり、マーケティング機能に引きずられない純粋なトランザクション送信に特化した設計になっている。
比較表(料金/無料枠/移行コスト/対応言語)
| ツール | 無料枠 | 料金体系 | 移行コスト | 対応主要言語 |
|---|---|---|---|---|
| Resend | 公式の料金ページで要確認 | 送信数課金 | 低(APIファースト設計) | Node.js / Python / Go / Ruby / PHP 他 |
| Postmark | 公式の料金ページで要確認 | 送信数課金 | 低〜中 | Node.js / Python / Ruby / PHP / .NET / Go |
| SendGrid | 公式の料金ページで要確認 | 送信数課金 | 中(設定項目が多い) | Node.js / Python / PHP / Java / C# / Go / Ruby |
| Mailgun | 公式の料金ページで要確認 | 送信数課金 | 低〜中(SMTP互換あり) | Node.js / Python / Ruby / PHP / Java / C# |
| Amazon SES | 公式の料金ページで要確認 | 送信数+データ転送量 | 高(IAM/SES設定が複雑) | AWS SDK経由で全主要言語 |
Postmarkはデリバリビリティの実績が厚く、エンタープライズ要件が強いチームに向く。SendGrid・Mailgunはマーケティングメールとトランザクションメールを同一ツールで管理したい場合の選択肢。Amazon SESは大量送信でコストを抑えたい場合に有効だが、IAMポリシーやバウンス管理の設定工数が高い。
移行手順
MandrillからResendへ切り替える手順を示す。
ステップ1: APIキー取得と疎通確認
# curlで即テスト
curl -X POST 'https://api.resend.com/emails' \
-H 'Authorization: Bearer YOUR_RESEND_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"from": "noreply@yourdomain.com",
"to": ["test@example.com"],
"subject": "移行テスト",
"html": "<p>Resendからの送信テストです。</p>"
}'
ステップ2: ドメイン認証(SPF/DKIM設定)
Resendダッシュボードの「Domains」からドメインを追加すると、追加すべきDNSレコードが表示される。既存のMandrill用DKIMレコードとは別エントリになるため、DNSプロバイダー側で重複しないよう注意する。
# 設定後の確認(dig コマンドで伝播チェック)
dig TXT resend._domainkey.yourdomain.com
ステップ3: 送信コードの置き換え(Node.js例)
// Before: Mandrill (mandrill-api)
const mandrill = require('mandrill-api/mandrill');
const m = new mandrill.Mandrill(process.env.MANDRILL_API_KEY);
m.messages.send({
message: {
from_email: 'noreply@yourdomain.com',
to: [{ email: 'user@example.com', type: 'to' }],
subject: '件名',
html: '<p>本文</p>',
}
}, () => {}, (err) => console.error(err));
// After: Resend SDK
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send({
from: 'noreply@yourdomain.com',
to: ['user@example.com'],
subject: '件名',
html: '<p>本文</p>',
});
ステップ4: Webhookの切り替え
バウンス・デリバリーイベントをアプリ側で受け取っている場合、Resendのwebhookエンドポイントを登録する。
curl -X POST 'https://api.resend.com/webhooks' \
-H 'Authorization: Bearer YOUR_RESEND_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"endpoint": "https://yourapp.com/webhooks/resend",
"events": [
"email.sent",
"email.delivered",
"email.bounced",
"email.complained"
]
}'
Mandrillのwebhookペイロード形式とはフィールド名が異なるため、受信側のパースロジックの更新が必要になる点に注意。
向き不向き
向いているチーム・規模
- スタートアップ〜中規模で、開発者が直接メール送信ロジックを管理するケース
- Node.js / Reactスタックで開発しており、React Emailテンプレートとの連携を活かしたいチーム
- MandrillのUIや複雑な設定に疲れ、APIファーストのシンプルな運用に切り替えたいチーム
- CI/CDパイプラインからテストメール・通知メールを自動送信したいケース(APIキー1本で完結)
向いていないケース・避けるべき状況
- 月次送信数が非常に多くコストを極限まで抑えたい場合は、Amazon SES のほうがコスト効率が高い可能性がある(公式の料金ページで要確認)
- 既存システムがSMTPインターフェース前提で構築されており、コード変更が困難な場合は、SMTP互換のあるMailgunやSendGridのほうが移行摩擦が小さい
- マーケティングメール・ニュースレターとトランザクションメールを同一ツールで一元管理したい場合は、Resendはトランザクション特化のため機能が足りない。SendGridが候補に上がる
- 厳格なSLA契約・コンプライアンス証跡が必要なエンタープライズ環境では、Postmarkの実績と手厚いサポートを優先すべきケースがある
Top comments (0)