Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

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!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away