結論(おすすめ1つ)
Postmark に乗り換えることを推奨する。
理由は3点。第一に、トランザクションメール専用設計のため到達率が高く、マーケティングメールと配信インフラを共有しない構造になっている。第二に、REST APIドキュメントとSDKの品質が高く、Mailchimp Transactional(旧Mandrill)からの移行コストが低い。第三に、バウンス・開封・クリックのWebhookが標準搭載されており、追加設定なしでイベント駆動の実装へ移行できる。
比較表(料金/無料枠/移行コスト/対応言語)
| ツール | 無料枠 | 月額目安 | 移行コスト | 主要SDK |
|---|---|---|---|---|
| Postmark | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 低(SMTP互換・REST両対応) | Node/Python/Ruby/PHP/Go 他 |
| SendGrid | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 低(SMTP互換) | Node/Python/Ruby/PHP/Go 他 |
| Mailgun | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 低(SMTP互換) | Node/Python/Ruby/PHP/Go 他 |
| Amazon SES | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 中(IAM・サンドボックス解除等) | AWS SDK 全言語 |
| Resend | 公式の料金ページで要確認 | 公式の料金ページで要確認 | 低(React Email連携が容易) | Node/Python/Go 他 |
移行コストの評価基準:SMTP互換があれば接続設定の変更のみで切り替え可能(低)。SESはIAMロール・リージョン選択・サンドボックス解除など独自の設定ステップが積み重なる(中)。
移行手順
1. Postmarkアカウントを作成しドメイン認証を行う
公式サイトでアカウントを作成し、送信ドメインの SPF・DKIM レコードをDNSに追加して認証を完了させる。ダッシュボードの「API Tokens」でサーバーAPIキーを発行する。
2. 環境変数を差し替える
# .env
# 変更前(Mailchimp Transactional / Mandrill)
MANDRILL_API_KEY=md-xxxxxxxxxx
# 変更後(Postmark)
POSTMARK_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
3. SMTP経由で接続している場合は接続先を変更する
# 例:ActionMailer / Nodemailer 等のSMTP設定値
smtp:
host: smtp.postmarkapp.com
port: 587
username: <POSTMARK_API_KEY> # ユーザー名にAPIキーをそのまま使用
password: <POSTMARK_API_KEY> # パスワードも同じAPIキー
tls: true
4. REST APIに直接移行する(推奨)
curl -X POST https://api.postmarkapp.com/email \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: $POSTMARK_API_KEY" \
-d '{
"From": "sender@example.com",
"To": "recipient@example.com",
"Subject": "注文確認",
"HtmlBody": "<p>ご注文ありがとうございます。</p>",
"TextBody": "ご注文ありがとうございます。",
"MessageStream": "outbound"
}'
# Python(postmarker ライブラリ使用)
from postmarker.core import PostmarkClient
client = PostmarkClient(server_token="$POSTMARK_API_KEY")
client.emails.send(
From="sender@example.com",
To="recipient@example.com",
Subject="注文確認",
HtmlBody="<p>ご注文ありがとうございます。</p>",
)
5. Webhookエンドポイントを登録する
ダッシュボードの「Webhooks」から、バウンス・開封・配信・スパム報告イベントを受け取るエンドポイントURLを登録する。Mandrill側で設定していたWebhookと同等のイベント種別を選択すれば、既存のイベント処理ロジックをほぼそのまま流用できる。
6. 動作確認後に旧設定を削除する
本番送信を少量でテストして到達・Webhook受信を確認してから、Mandrillダッシュボードで旧APIキーを無効化し、Webhookを削除する。
向き不向き
向いているチーム・用途
- パスワードリセット・購入確認・通知など、到達率がサービス品質に直結するトランザクションメールを送るチーム
- バックエンドエンジニアが少なく、インフラ設定の複雑さを最小限にしたい小〜中規模プロダクト
- Mandrillのコスト増や仕様変更を受けて早急に代替を探しているチーム(SMTP互換のため最短1日での切り替えが現実的)
- バウンス・開封イベントをWebhookで受け取り、再送ロジックやログ処理を自前実装したいチーム
避けるべきケース
- マーケティングメール(ニュースレター・一斉配信)もトランザクションと同一プラットフォームで管理したい場合:Postmarkはトランザクション専用設計のため、SendGridやMailgunの方が適している
- AWSインフラに統一済みでIAM管理を一元化したい大規模チーム:Amazon SESの方がコスト効率・権限管理の面で優位になることが多い
- React/Next.js主体のフロントエンドチームがメールHTMLも自社でコンポーネント管理したい場合:Resend+React Emailの組み合わせが開発体験として上回る
- 月間送信数が数百万通を超えるスケールで単価コストの最小化が最優先の場合:SESまたはMailgunの大口プランを公式の料金ページで精査した上で判断すること
If you found this useful: I packaged 50 copy-paste AI debugging prompts + drop-in Claude Code config templates (CLAUDE.md, settings.json, MCP) into a small kit.
Launch deal: code START50 = 50% off → 50 AI Debugging Prompts + Claude Code Config Pack (about $6, 50% off applied)
New: my 10-chapter ebook Practical Claude Code — automation & unattended operation (about $9, 50% off applied)
Top comments (0)