--> -->

skimemo


skimemo - 日記/2016-06-19/LaravelでMailDevを使って心おきなくメール送信をテストする の変更点


#blog2navi()
*LaravelでMailDevを使って心おきなくメール送信をテストする [#pfe2b0ce]

メール配信する処理を作成するときに困るのが配信先です。~
通常は自分宛にメールしますが、それだと自分のメールボックスがゴミだらけになりますし、自分宛にしか送れませんし、開発中のバグで他の(本番用の)メールアドレスに送ってしまうと大変です。~
そこで欲しくなるのが、SMTPのモックです。~
~
[[MailDev:http://danfarrelly.nyc/MailDev/]]はそんな悩みを一気に解消してくれます。~
SMTP機能とWEBメーラーの機能を持っているので、完全に閉じた環境でメール配信をテストすることができます。~
~
** インストール [#d1677de2]
MailDevはnodejs上で動きます。~
まずはnodejsのインストール。~
[[こちらのページ:https://nodejs.org/en/download/package-manager/]]の通りにインストールします。
>$ curl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -~
$ sudo yum -y install nodejs
<
そしたら次はMailDev。
>$ sudo npm install -g maildev
<
これでもう完了。設定ファイルも何もありません。
** 起動 [#u0c74375]
早速起動。
>$ maildev~
MailDev app running at 0.0.0.0:1080~
MailDev SMTP Server running at 0.0.0.0:1025~
^Z
<
デフォルトではローカルでポートをlistenします。~
外からブラウズできるよう、HTTPのアドレスを指定します。~
ついでに実際の配信も出来るように本当のsmtp(下記ではlocahost)も指定しておきます。
>$ maildev --outgoing-host localhost --web-ip IPアドレス
<
** 動作確認 [#x048b5df]
smtpで話しかけてみます。
>$ telnet localhost 1025~
Trying 127.0.0.1...~
Connected to localhost.~
Escape character is '^]'.~
220 dns.hogehoge.jp ESMTP~
HELO example.jp~
250 OK: Nice to meet you [127.0.0.1]~
MAIL FROM: test@example.jp~
501 Error: Bad sender address syntax~
MAIL FROM:<test@example.jp>~
250 Accepted~
RCPT TO:<address@example.jp>~
250 Accepted~
DATA~
354 End data with <CR><LF>.<CR><LF>~
Subject: hello maildev~
~
This is a test mail.~
.~
250 Message queued as yn8NHZd4~
^]~
telnet> quit~
Connection closed.~
<
ブラウザでWeb UIへアクセスしてみます。~
アクセス先は http://IPアドレス:1080/
#ref(e1.png)~
おおー、なんか来てますね。~
早速メールを開いてみると、~
#ref(e2.png)~
中身も見れた(あたりまえ(笑))。~
リレー用SMTPの引数も指定しているので、Relayアイコンが有効です。クリックすると確認ダイアログが出ます。~
#ref(e6.png)~
[OK]を押すと配信完了のダイアログが出て配信完了。~
#ref(e7.png)~
本当にメールが来ているので、メーラーで確認すればOKです。~
** 開発用機能 [#mbd4ef5e]
このWeb UIの白眉はテスト用のメニューがちゃんと揃っているところ。~
Displayメニューでは、HTML形式、テキスト形式、ヘッダー、元データを確認できます。~
#ref(e3.png)~
Viewportメニューでは、スマホ用、タブレット用、PC用の見栄えを確認できます。~
#ref(e4.png)~

** 起動設定 [#b7fb8110]
さて、遊んでばかりいてもしょうが無いので(笑)、自動起動設定を行います。~
init.dに起動ファイルを作成。~
 #!/bin/sh
 #
 # maildev        init file for starting up the maildev daemon
 #
 # chkconfig:   - 20 80
 # description: Starts and stops the maildev daemon.
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
 name="maildev"
 exec="/usr/bin/$name"
 pidfile="/var/run/maildev/maildev.pid"
 MAILDEV_OPTIONS="--outgoing-host localhost --web-ip IPアドレス"
 
 lockfile=/var/lock/subsys/maildev
 
 start() {
     [ -x $exec ] || exit 5
     echo -n $"Starting $name: "
     daemon "$exec $MAILDEV_OPTIONS" &
     retval=$?
     echo
     [ $retval -eq 0 ] && touch $lockfile
     [ $retval -eq 0 ] && ps ax | grep node.*maildev | awk '{print $0}' | tail -n 1 > $pidfile
     return $retval
 }
 
 stop() {
     echo -n $"Stopping $name: "
     killproc -p $pidfile $name
     retval=$?
     echo
     [ $retval -eq 0 ] && rm -f $lockfile
     return $retval
 }
 
 restart() {
     stop
     start
 }
 
 reload() {
     false
 }
 
 rh_status() {
     status -p $pidfile $name
 }
 
 rh_status_q() {
     rh_status >/dev/null 2>&1
 }
 
 case "$1" in
     start)
         rh_status_q && exit 0
         $1
         ;;
     stop)
         rh_status_q || exit 0
         $1
         ;;
     restart)
         $1
         ;;
     reload)
         rh_status_q || exit 7
         $1
         ;;
     force-reload)
         force_reload
         ;;
     status)
         rh_status
         ;;
     condrestart|try-restart)
         rh_status_q || exit 0
         restart
         ;;
     *)
         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
         exit 2
 esac
 exit $?

chkconfigで登録。
>$ sudo chkconfig --add maildev~
$ chkconfig maildev on
<
これで完了〜。~
念のためiptablesなどで1080へアクセス出来る人を絞ってくださいね。
** Laravelの設定 [#z88d0049]
紹介するまでもないぐらい超カンタンです。~
config/mail.phpのポートを1025にするだけ。~
#ref(e5.png)
** 参考URL [#z84c7779]
こんな素敵なソフトなのに日本語の情報ってこれしか無いんじゃないだろうか。感謝。~
[[maildev (SMTP mock server) を使ってハイパーメール開発:http://qiita.com/sotarok/items/ff5ca29f88d1f8069c98]]
** 20170815追記: Windowsでもカンタン [#d7e8b5bf]
このmaildevはnodejsベースですので、Windowsでもnodejsが入っていれば動きます。~
nodejsのインストールはググればいくらでも出てくるので適当に。~
nodejsのインストールは[[ググれば:http://www.google.co.jp/search?hl=ja&q=windows+nodejs]]いくらでも出てくるので適当に。~
~
まずはnpmが入っていることを確認。
 C:\Users\atsumi>npm
 
 Usage: npm <command>
 
 where <command> is one of:
    access, add-user, adduser, apihelp, author, bin, bugs, c,
    cache, completion, config, ddp, dedupe, deprecate, dist-tag,
    dist-tags, docs, edit, explore, faq, find, find-dupes, get,
    help, help-search, home, i, info, init, install, issues, la,
    link, list, ll, ln, login, logout, ls, outdated, owner,
    pack, ping, prefix, prune, publish, r, rb, rebuild, remove,
    repo, restart, rm, root, run-script, s, se, search, set,
    show, shrinkwrap, star, stars, start, stop, t, tag, team,
    test, tst, un, uninstall, unlink, unpublish, unstar, up,
    update, upgrade, v, verison, version, view, whoami
 
 npm <cmd> -h     quick help on <cmd>
 npm -l           display full usage info
 npm faq          commonly asked questions
 npm help <term>  search for help on <term>
 npm help npm     involved overview
 
 Specify configs in the ini-formatted file:
     C:\Users\atsumi\.npmrc
 or on the command line via: npm <command> --key value
 Config info can be viewed via: npm help config
 
 npm@2.14.4 C:\Program Files\nodejs\node_modules\npm
ちゃんと入っています。~
早速インストール。
 C:\Users\atsumi>npm install -g maildev
 npm WARN deprecated mimelib@0.2.19: This module is deprecated
 C:\Users\atsumi\AppData\Roaming\npm\maildev -> C:\Users\atsumi\AppData\Roaming\npm\node_modules\maildev\bin\maildev
 maildev@0.14.0 C:\Users\atsumi\AppData\Roaming\npm\node_modules\maildev
 ├── open@0.0.5
 ├── async@1.5.1
 ├── smtp-server@1.4.0
 ├── commander@2.9.0 (graceful-readlink@1.0.1)
 ├── simplesmtp@0.3.35 (xoauth2@0.1.8, rai@0.1.12)
 ├── smtp-connection@2.3.1 (nodemailer-shared@1.0.4)
 ├── express@4.13.4 (escape-html@1.0.3, array-flatten@1.1.1, cookie-signature@1.0.6, utils-merge@1.0.0, merge-descriptors@1.0.1, vary@1.0.1, content-type@1.0.2, methods@1.1.2, fresh@0.3.0, cookie@0.1.5, range-parser@1.0.3, content-disposition@0.5.1, path-to-regexp@0.1.7, parseurl@1.3.1, etag@1.7.0, depd@1.1.1, qs@4.0.0, on-finished@2.3.0, finalhandler@0.4.1, debug@2.2.0, proxy-addr@1.0.10, send@0.13.1, type-is@1.6.15, accepts@1.2.13, serve-static@1.10.3)
 ├── mailparser@0.5.3 (mime@1.3.6, mimelib@0.2.19, uue@3.1.0, encoding@0.1.12)
 ├── wildstring@1.0.8
 └── socket.io@1.4.5 (debug@2.2.0, has-binary@0.1.7, socket.io-parser@2.2.6, socket.io-adapter@0.4.0, engine.io@1.6.8, socket.io-client@1.4.5)
なにやらワーニングが出ていますがとりあえず入ったようです。~
~
そして起動。~
 C:\Users\atsumi>maildev
 MailDev app running at 0.0.0.0:1080
 MailDev SMTP Server running at 0.0.0.0:1025
あとは前述の通り1025にtelnetして、1080にブラウザで接続して動作確認すれば完了〜。

#htmlinsert(twitterbutton.html)
RIGHT:Category: &#x5b;[[Linux>日記/Category/Linux]]&#x5d; - 00:06:23
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()