メール配信が絡む開発やテストで便利なアプリやサービス(Mailtrap, mailcatcher)
2013年12月04日 12時28分
メールの配信テストは失敗して外部アドレスに送ってしまうと取り返しのつかないことになってしまいます。
現に本番データでテストをして(この時点でおかしいが…)顧客にテストメールを誤配信したという現場に居合わせた経験があります。その後のフォローアップは悲惨なものでした。
この事件以来、メール配信が絡む実装やテストに関してはかなり神経使ってテストしています。
ですが毎回オフライン状態にしてテストしたりテストデータを変更して対応するのも非効率なのでなんとかしたい。
またアクティベーションurlを配信してアカウントを有効化する場合、テストの度にアカウントを削除して再度登録しての繰り返しなどしているのではないでしょうか。
配信前にサーバでメールを止めてその内容を確認できたらどんなに楽か。
そんな不満を解決すべく調べたらピッタリのものがあったのでご紹介します。
SMTP編
無料でSMTPでの配信テストができるWebServiceです。
使い方も簡単で英語が分からなくても雰囲気&Topの動画で9割以上分かります。
- サインインしてアカウントを作成
- 自動配信されるメールに記載されているurlを踏んでアカウントを認証
-
ボックスを作成
作成するとsmtpに必要な情報(STMP Server, Port, username, password)が作成される -
生成された情報をPG側に反映
管理画面上に代表的なフレームワーク(Ruby On Rails, Django, Catalyst, JBoss, Seam, Zend Framework, Symfony, CakePHP, CodeIgniter)のConfigファイルを生成してくれるので参考にできます。 - Let’s メール送信テスト
配信したメールはMailtrap上で確認、破棄できます。
sendmail編
smtpではなくsendmailを使っている場合だと残念ながら簡単にはMailtrapが使えません。
具体的にはLinux環境とかでphp既存アプリがmb_send_mail関数を使っている場合等が該当します。
そんな場合はmailcatcherが便利。
ドクロ画像がサンプル画面に使用されていて怪しさがプンプンと漂っていますがアプリ自体はフレンドリーです。
これを使えばテストサーバにMailtrapのような仕組みを自分のテストサーバに導入することができます。
配信する前のメールをキャッチしてWeb画面で確認しそのまま破棄できるのです。
インストール手順
1 2 3 4 5 6 7 8 9 10 11 |
// ruby製のアプリなのでruby環境が必要 yum install ruby ruby-devel rubygems // g++やsinatra、sqlite3が必要なので入っていない場合はインストールする yum install gcc-c++ sqlite sqlite-devel gem install sinatra -v 1.3.4 // gem install mailcatcher // テスト環境 = 開発環境なら--http-ipオプションは不要。 mailcatcher --http-ip=xxx.xxx.xxx.xxx |
起動ポート等をオプションで変更できますので必要に応じて–helpでオプション一覧を確認してください。
その後、http://xxx.xxx.xxx.xxx:1080
にアクセスすれば管理画面にアクセスできます。
php側からmailcatcherを使用するようにphp.iniか.htaccessを変更します。
・php.iniの場合
1 |
sendmail_path = /usr/bin/env catchmail |
・.htaccessの場合
1 |
php_value sendmail_path "/usr/bin/env catchmail" |
他の言語も更新HPに設定方法が記載されていますのであまり迷うことはないでしょう。
これらを使うことで誤配信の恐怖から解放されますので是非お試しあれ。
前の記事で一人advent calendarをやってみると言いましたが1日目でギブですorz
なのでなるべく更新頻度を高める期間として頑張っていこうと思います。
2014/1/27 mailcatcherの手順にyumとか追記