← Blog

Herokuから トランザクショナルメールを送信する方法 (Mailer To Goを使用)

ガイド Heroku、SMTP、配信可能性、トランザクションメール July 9, 2026 by メーラー・トゥー・ゴー・チーム
Herokuアプリからinbox-landingトランザクショナルメールを送信する:Mailer To Goアドオンをプロビジョニングし、送信サブドメインを検証し、RailsまたはNodeを設定し、Herokuに固有の問題(設定変数、レビューアプリ、バックグラウンドジョブ、ポート25)を処理します。

Heroku dynoは、アプリを実行するのに最適な場所ですが、メールサーバーを実行するのには最悪です。ファイルシステムは一時的で、dynoのIPは共有され、ローテーションし、アウトバウンドポート25は実質的に使用不可です。そのため、dynoから直接送信しようとするメールはスパムになるか、そもそも送信されません。解決策は、メール送信をメールサービスに任せることです。Mailer To Goは、数秒でプロビジョニングされ、アプリに自動で接続するHerokuアドオンです。認証済みの信頼性が管理されたポート587での接続でメールを送信できます。

このガイドは、Herokuでメール送信を完全に設定し、多くの人々が躓くHeroku特有の落とし穴(config vars、review apps、バックグラウンドジョブ)をカバーしています。

ステップ1 — アドオンをプロビジョニングする

CLIから:

heroku addons:create mailertogo --app your-app

またはHeroku Elements Marketplaceから追加します。どちらの方法でも、プロビジョニングによって以下のconfig varsが自動的にアプリに設定されます。認証情報をコピーペーストする必要はありません:

heroku config --app your-app | grep MAILERTOGO
# MAILERTOGO_SMTP_HOST:      smtp.mailertogo.com
# MAILERTOGO_SMTP_USER:      ...
# MAILERTOGO_SMTP_PASSWORD:  ...
# MAILERTOGO_API_KEY:        ...

すべてのデプロイとreview appで必ず取得されるようにするため、app.jsonに追加します:

{
  "addons": ["mailertogo"]
}

ステップ2 — 送信ドメインを確認する

Mailer To Goダッシュボードで送信サブドメインmtg.yourdomain.comなど)を追加し、表示されるSPFレコードとDKIMレコードを公開します(ルートドメインにDMARC ポリシーも追加)。サブドメインを使用することで、アプリの送信評判をルートドメインから分離でき、Herokuのような一時的なプラットフォームからのメールが確実に配信される理由になります。Mailer To Goがmtg.yourdomain.comから送信する理由SPF/DKIM/DMARCセットアップガイドを参照してください。

ステップ3 — アプリをconfig varsに指す

アプリにはすでに認証情報が環境変数として設定されています。参照するだけです。

Rails:

# config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:         ENV["MAILERTOGO_SMTP_HOST"],   # smtp.mailertogo.com
  port:            587,
  user_name:       ENV["MAILERTOGO_SMTP_USER"],
  password:        ENV["MAILERTOGO_SMTP_PASSWORD"],
  authentication:  :plain,
  enable_starttls: true
}

Node.js (Nodemailer):

const transport = require("nodemailer").createTransport({
  host: process.env.MAILERTOGO_SMTP_HOST,
  port: 587,
  auth: { user: process.env.MAILERTOGO_SMTP_USER, pass: process.env.MAILERTOGO_SMTP_PASSWORD },
});

SMTPではなくHTTPを使用したい場合、または別の言語ですか?代わりにREST APIを使用してください。完全な例はMailer To Go APIおよびSMTPでメールを送信するを参照してください。

ステップ4 — デプロイしてテストメールを送信する

git push heroku main
heroku run rails runner 'ActionMailer::Base.mail(from: "hello@mtg.yourdomain.com", to: "you@example.com", subject: "Hello from Heroku", body: "It works.").deliver_now' --app your-app
heroku logs --tail --app your-app   # 送信を監視

Gmailでメッセージを開き → 元のメッセージを表示をクリックして、SPF、DKIM、DMARCがすべてPASSと表示されていることを確認します。

Heroku特有の落とし穴

dynoから送信しないときにこれが機能する理由

配信可能性は送信IPとドメインによってプレイされる信頼度のゲームです。Heroku dynoには安定したIPも、ウォームされた信頼度も持たず、受信ボックスプロバイダが要求する認証レコードを公開できません。Mailer To Goは、管理されたIP、DKIMサイニングと鍵ローテーション、SPF/DMARCアラインメント、バウンス/クレーム処理を提供します。dynoがアプリを実行するのに適した処理をしている間、メールはメール配信に構築されたインフラストラクチャを走ります。


Addons.ioまたはBuild.ioを通じてデプロイしていますか?セットアップは同じです。Heroku、Addons.io、Build.ioでMailer To Goを使用するを参照してください。Herokuサブドメインを一般的に使用していますか?Herokuサブドメイン:入門ガイドを参照してください。