← Blog

Ruby、Python、Node.js、Go でメール送信する方法 - Mailer To Go を使用

ガイド SMTP、API、Ruby、Python、Node.js、Go July 9, 2026 by メーラー・トゥ・ゴー・チーム
Mailer To Go 経由でトランザクショナルメールを SMTP で送信する方法、Ruby、Python、Node.js、Go での動作するコードサンプル付き — さらに本番環境のヒントと開発中の REST API のプレビュー。

Mailer To Go を通じてトランザクショナルメールを送信する方法は、今日では SMTP です。フレームワークの組み込みメーラーを当社の送信エンドポイントに向けるだけで、数分以内に、任意の言語から送信できます。このガイドには Ruby、Python、Node.js、Go での動作例があります。(JSON REST API は開発中です — 最後のメモを参照してください。)

ここにあるすべては、データプレーン です — 実際にメールを送信します。コントロールプレーン (配信/バウンスイベント、インバウンド受信、およびプロビジョニング) は、後で独自のガイドが付属する別のサーフェスです。

認証情報を取得する

ダッシュボードから、SMTP ユーザー名とパスワード を取得し、環境変数として設定します。Heroku と Build.io では、アドオンをプロビジョニングすると、これらは自動的に設定変数として設定されます。

export MAILERTOGO_SMTP_HOST=smtp.mailertogo.com   # 正確なホストはダッシュボードに表示されます
export MAILERTOGO_SMTP_USER=...                    # ダッシュボードから
export MAILERTOGO_SMTP_PASSWORD=...                # ダッシュボードから

確認済みドメイン上のアドレスから送信します (ドメイン設定と認証を参照)。Mailer To Go は確認されていない From: ドメインを拒否します。

SMTP で送信する

ダッシュボードから SMTP ホスト、ポート 587 (STARTTLS) または 465 (SSL)。標準 SMTP であるため、お使いの言語の組み込みメーラーはすでにそれをサポートしています。

Ruby (mail gem):

require "mail"

Mail.defaults do
  delivery_method :smtp,
    address:              ENV["MAILERTOGO_SMTP_HOST"], port: 587,
    user_name:            ENV["MAILERTOGO_SMTP_USER"],
    password:             ENV["MAILERTOGO_SMTP_PASSWORD"],
    authentication:       :plain, enable_starttls_auto: true
end

Mail.deliver do
  from    "Acme <hello@yourdomain.com>"
  to      "user@example.com"
  subject "Hello from Ruby"
  body    "Your email body here."
end

Python (標準ライブラリ smtplib):

import os, smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg["From"] = "Acme <hello@yourdomain.com>"
msg["To"] = "user@example.com"
msg["Subject"] = "Hello from Python"
msg.set_content("Your email body here.")

with smtplib.SMTP(os.environ["MAILERTOGO_SMTP_HOST"], 587) as s:
    s.starttls()
    s.login(os.environ["MAILERTOGO_SMTP_USER"], os.environ["MAILERTOGO_SMTP_PASSWORD"])
    s.send_message(msg)

Node.js (Nodemailer):

const nodemailer = require("nodemailer");

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

await transport.sendMail({
  from: "Acme <hello@yourdomain.com>",
  to: "user@example.com",
  subject: "Hello from Node",
  text: "Your email body here.",
});

Go (標準ライブラリ net/smtp):

package main

import (
	"net/smtp"
	"os"
)

func main() {
	host := os.Getenv("MAILERTOGO_SMTP_HOST")
	auth := smtp.PlainAuth("", os.Getenv("MAILERTOGO_SMTP_USER"), os.Getenv("MAILERTOGO_SMTP_PASSWORD"), host)
	msg := []byte("To: user@example.com\r\n" +
		"From: Acme <hello@yourdomain.com>\r\n" +
		"Subject: Hello from Go\r\n\r\n" +
		"Your email body here.\r\n")
	if err := smtp.SendMail(host+":587", auth, "hello@yourdomain.com", []string{"user@example.com"}, msg); err != nil {
		panic(err)
	}
}

プレーンテキストの代わりに HTML を送信する場合は、メッセージの HTML パート (Ruby mail gem の html_part、Python の add_alternative(..., subtype="html")、Nodemailer の html フィールド、または Go の Content-Type: text/html ヘッダー) を設定します — 他はすべて同じです。

本番環境のヒント

REST API は開発中です

SMTP 接続を保持するのではなく HTTP 呼び出しを行いたいチームの場合は、JSON 送信 API が近日公開予定です。計画された形式:

POST https://api.mailertogo.com/api/v1/emails
Authorization: Bearer <your API key>
Content-Type: application/json

{
  "from": "hello@yourdomain.com",
  "to": "user@example.com",          // または配列、最大 50 件の受信者
  "subject": "Hello",
  "html": "...", "text": "...",       // どちらか一方または両方を提供
  "reply_to": "support@yourdomain.com",
  "tags": [ { "name": "campaign", "value": "welcome" } ]
}

キューに入れられたメッセージの id を返します。このエンドポイントはまだライブではありません — 今日は SMTP で送信してください。REST API がリリースされると、このポストを更新します。(より広いコントロールプレーン API — イベント、インバウンド受信、プロビジョニング — は別途追跡されます。)


特定のプラットフォームにデプロイしていますか? Heroku から トランザクショナルメールを送信を参照してください。別のプロバイダーから移行していますか? SendGridMailgunAmazon SES からの移行ガイドを参照してください。