SMTPHogとGolangでメール送信アプリを作ろう
SMTPHogとGolangでメール送信アプリを作ろう
Github:MailHog
普段使うことはないけど、SMTPサーバが急遽必要なときは少なからずありますよね。 挙げだすとキリがなさそうですが…例えば…
- 開発用に電子メールの送信をテストしたいとき
- 閉じたネットワークの中で作業しているとき
今回は、そのようなニーズに答えるSMTPHogについて書いていきます。 主なニーズは開発用に本番のメール使うのは怖いんだけどなぁというケースに対し、サクッと動作確認する環境を用意することができます。
Mailhog使い方
Windowsをお使いの場合は、Download the latest release for your platform からダウンロードして使えます。
ビルドされたexeファイルを立ち上げるとこのような画面が表示されます。
ブラウザアクセス
[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で書いた送信プログラムを開くとメールが送信できていることが確認できます。
メールを開くと詳細な内容を見ることができます。
まとめ
メールを送信するプログラムの動作を確認することができました。 ローカル環境で誰にも迷惑を掛けずに開発を行うことができます。 大量のメールを送信する処理などを開発する際(中々無いと思いますが…)に利用できるんじゃないでしょうか。