--> -->
#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: [[[Linux>日記/Category/Linux]]] - 00:06:23 ---- RIGHT:&blog2trackback(); #comment(above) #blog2navi()