メールに絡む開発するときって結構困りますよね。
実際にテストメール飛ばしちゃ困るとかもあるし、向き先全部自分とかにしたらメールボックスいみわからないことになるし、まぁなんかしらのブラックホールが欲しくなります。
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) アクセスすると、こんなかんじ。
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
そうすると、
メールきてる。ひらくと、
こんなときに便利そう
- 開発環境で、実際にはメール飛んでほしくない場合
- 大量メール送信のテストをしたいとき (一応2万通とか送ってみたけど maildev でうけとれた。)
- その他 ...
実際にメールをうけとった側のメーラーでの見た目も確認したい
で、大量送信や開発時にこいつを使うと便利なのはわかったとしして、実際にそのメールが Gmail ではどう見えるとか、Outlook ではどう見える、とかはやっぱり実際に送らないと見え方わからないですよね、というときに、
$ maildev --outgoing-host smtp.gmail.com --outgoing-secure --outgoing-user 'you@gmail.com' --outgoing-pass '<pass>'
で起動しておけば、Relayボタンを押すだけ。
で、Gmailに同じメールを送信してくれます。BENRI!
maildev ではできないこと
- 実際に使う SMTP サーバーとの動作確認 (ま、これは結合テストなんですが)
- ISO-2022-JP メール (nodemailer が対応してない、もっというと nodemailer が依存してる liblime が依存してる iconv-lite が対応してない)
てことで
Enjoy it!