MailCatcher でメールの送受信をテストしよう


お問い合わせフォームや、 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 クラス をご覧ください