MailHogで自作したメール送信アプリの動作確認をしよう

2021-04-13

SMTPHogとGolangでメール送信アプリを作ろう

Github:MailHog

普段使うことはないけど、SMTPサーバが急遽必要なときは少なからずありますよね。 挙げだすとキリがなさそうですが…例えば…

  • 開発用に電子メールの送信をテストしたいとき
  • 閉じたネットワークの中で作業しているとき

今回は、そのようなニーズに答えるSMTPHogについて書いていきます。 主なニーズは開発用に本番のメール使うのは怖いんだけどなぁというケースに対し、サクッと動作確認する環境を用意することができます。

Mailhog使い方

Windowsをお使いの場合は、Download the latest release for your platform からダウンロードして使えます。

ビルドされたexeファイルを立ち上げるとこのような画面が表示されます。

Mailhog立ち上げ

ブラウザアクセス

[MMailHog](http://localhost:8025) ローカルアドレスにアクセスします。

ブラウザ

メール送信に成功したら送信済みメールが表示されます。

メールを送信プログラム

実際に送信するプログラムを書いていきます。 特に指定は無いですが、今回はgolangでテスト用のプログラムを書きます。

今回はこちらのライブラリを使用します。 gomail.v2

gomailにかかれているサンプルから、Mailhog向けに一部書き換えます。 Dialer内のHostをlocalhostにします。 Port番号もMailhogの設定に合わせて変更します。

package main

import (
    "gopkg.in/gomail.v2"
)

func main() {
    m := gomail.NewMessage()
    m.SetHeader("From", "    from@example.com")
    m.SetHeader("To", "to@example.com")
    m.SetHeader("Subject", "Hello!")
    m.SetBody("text/plain", "Hello!")

    d := gomail.Dialer{Host: "localhost", Port: 1025}
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}

実行結果

先程のgolangで書いた送信プログラムを開くとメールが送信できていることが確認できます。

実行結果

メールを開くと詳細な内容を見ることができます。

メールの内容の確認

まとめ

メールを送信するプログラムの動作を確認することができました。 ローカル環境で誰にも迷惑を掛けずに開発を行うことができます。 大量のメールを送信する処理などを開発する際(中々無いと思いますが…)に利用できるんじゃないでしょうか。