LoginSignup
71
63

More than 5 years have passed since last update.

maildev (SMTP mock server) を使ってハイパーメール開発

Last updated at Posted at 2015-06-21

メールに絡む開発するときって結構困りますよね。
実際にテストメール飛ばしちゃ困るとかもあるし、向き先全部自分とかにしたらメールボックスいみわからないことになるし、まぁなんかしらのブラックホールが欲しくなります。

mocksmtpd を使うことも過去にはあったのですが、UTF-8 のメール見られないとか設定面倒くさいとかありまして。

で、こいういうのって多分 node.js で何かしらあるだろう、と思って探したら、ありました。
あまり日本で紹介している人もいなかったのでお宝発見的な気持ちになったので、紹介しておこうと思います。

何をやってくれるアプリケーション?

  • 指定 port を listen してメール全部吸収してくれます
  • ウェブインターフェイスを用意していて、その画面でメールにアクセスできます
  • ウェブインターフェイスの機能が結構充実してます:
    • Text/HTML の切り替えや
    • ViewPort の切り替え
    • ソース見たりヘッダー見たり
    • もちろん添付ファイルを見たり
    • .eml 形式でダウンロードしたりもできます
  • 必要があれば更に外のSMTPサーバーに Relay してくれます

インストールと立ち上げ

$ npm install -g maildev

基本的に設定不要で、これだけで動きます。

おもむろに maildev って打つだけ

$ maildev
Temporary directory created at /tmp/maildev/6791
MailDev app running at 0.0.0.0:1080
MailDev SMTP Server running at 0.0.0.0:1025

デフォルトで、SMTP は 1025、Webは 1080 で待ち受けるので、変えたい場合は -s -w オプションで変更を。

Web画面 (port 1080) アクセスすると、こんなかんじ。

image

SMTPを喋ってみる

とりあえずテキストプロトコルでしゃべってみる

% telnet localhost 1025
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 aoi ESMTP node.js simplesmtp
HELO stkr.jp
250 aoi at your service, [127.0.0.1]
MAIL FROM:<sotarok@strk.jp>
250 2.1.0 Ok
RCPT TO:<sotaro.k@gmail.com>
250 2.1.0 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Hello Sotaro!?

Hi, sotaro

This is a test mail.
Can you see me?

.
250 2.0.0 Ok: queued as ABC

そうすると、

image

メールきてる。ひらくと、

image

こんなときに便利そう

  • 開発環境で、実際にはメール飛んでほしくない場合
  • 大量メール送信のテストをしたいとき (一応2万通とか送ってみたけど maildev でうけとれた。)
  • その他 ...

実際にメールをうけとった側のメーラーでの見た目も確認したい

で、大量送信や開発時にこいつを使うと便利なのはわかったとしして、実際にそのメールが Gmail ではどう見えるとか、Outlook ではどう見える、とかはやっぱり実際に送らないと見え方わからないですよね、というときに、

$ maildev --outgoing-host smtp.gmail.com --outgoing-secure --outgoing-user 'you@gmail.com' --outgoing-pass '<pass>'

で起動しておけば、Relayボタンを押すだけ。

Screenshot 2015-06-21 21.42.06.png

で、Gmailに同じメールを送信してくれます。BENRI!

maildev ではできないこと

  • 実際に使う SMTP サーバーとの動作確認 (ま、これは結合テストなんですが)
  • ISO-2022-JP メール (nodemailer が対応してない、もっというと nodemailer が依存してる liblime が依存してる iconv-lite が対応してない)

てことで

Enjoy it!

71
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
63