お問い合わせフォームや、 ECの注文完了、サンクスメール、メルマガ機能など、メールの送信機能をテストしたい場合に便利なツールをご紹介します。
メール送信関連の機能を開発する際、大量にメールを送信してメールサーバーに怒られたり、携帯キャリアのドメインへの送信など、通常のメールサーバーでは、テストが難しいことが多いです。
この MailCatcher というツールは、
- テスト用の SMTP サーバーとして使用可能
- 外部にメールを漏らさない
- MailCatcher の SMTP に送信したメールを受信チェック可能
という便利な機能を持っています。
インストール方法
- 前提として Ruby1.9.3以降 がインストールされている必要があります
- Windows でも動きます。
### インストール
gem install mailcatcher
### 起動
mailcatcher
docker をお使いの方は、以下のコマンドを使用すると良いでしょう
docker run -d -p 1080:1080 -p 1025:1025 \
--name mailcatcher schickling/mailcatcher
設定方法
SMTP サーバーのポート番号に 1025 を指定するだけです。
EC-CUBE3系をお使いの場合は、 app/config/eccube/mail.yml
を以下のように設定します。
mail:
transport: smtp
host: localhost
port: '1025'
username: ''
password: ''
encryption: null
auth_mode: null
charset_iso_2022_jp: false
EC-CUBE2系をお使いの方は、 管理画面→パラメータ設定または、 data/config/config.php
の以下のパラメータを設定をしてください。
- MAIL_BACKEND smtp
- SMTP_PORT 1025
- SMTP_HOST localhost
メールの確認方法
送信したメールをチェックするには、ブラウザから http://localhost:1080 にアクセスします。
これを使えば、携帯キャリアのRFC違反メールアドレスもテスト可能です。
また、メールが外に漏れることはないので、顧客にテストメールを送信してしまう、、などのトラブルも防止できます。
その他
Web API 経由でもメールチェック可能ですので、EC-CUBE3 では、この MailCatcher をユニットテストで活用しています。
興味のある方は EccubeTestCase クラス をご覧ください