MailHogとはなにか
ローカル開発環境上でメールの送受信ができるようになります。
入力したメールアドレスに実際に送信はされず、
ローカル上でメールが受け渡しされます。
導入するメリット
クライアントにメールが送信される事故を防ぐほか、
編集の都度サーバーにアップロードする手間が省けるため、
デバッグ作業の効率化が期待できます。
似たようなソフトはあるのか
Ruby製のMailcatacherなど、似たようなソフトはいくつかあります。
WordPressのローカル開発環境が構築できる Local に同梱されており、
とても使いやすかったのでこのソフトを選びました。
作業環境
今回はmacOS Mojave 10.14.6
で動作を確認しました。
ビルトインのapacheで使用できるように設定していきますが、
MAMPやXAMPPなどでも同様の手順で設定が可能かと思われます。
MailHogをインストールする
以下のコマンドを実行してMailHogをインストールします。
$ brew install mailhog
以下のコマンドを実行して、MacOS起動時にMailHogが自動的に起動するようにします。
$ brew services start mailhog
ここまで完了したら http://localhost:8025/ をブラウザで開いてください。
Gmail風のページが表示されればインストールは完了しています。
mhsendmailをインストールする
インストールすることで、sendmail
の代替として動作し、
SMTPポート1025
を使用して電子メールが送信されます。
必ず必要なので一緒にインストールしてください。
GOのインストールが必要なので、以下のコマンドを実行してインストールします。
$ brew install go
続いて以下のコマンドを実行してmhsendmail
をインストールします。
$ go get github.com/mailhog/mhsendmail
追記 22/08/22
Go1.16 からは以下のようなコマンドを実行してください。
$ go install github.com/mailhog/mhsendmail@latest
成功すれば、~/go/bin/
にmhsendmail
というファイルが追加されているはずです。
php.ini を編集する
続いてphp.iniを
編集します。sendmail_path
を以下のように書き換えてください。保存場所は好きな場所で問題ありません。
sendmail_path = "/Users/{ユーザ名}/go/bin/mhsendmail"
以上でインストール作業は終了です。
テストメールを送信する
実際にメールを送信してみます。mail.php
など適当な名前をつけ、お好きな場所に設置して実行してください。
<?php
var_dump(
mail(
'to@example.com',
'TEST MAIL',
'This is test mail',
'From: from@example.com'
)
);
?>
実行後 http://localhost:8025/ を開いてみて、
メールが1件追加されていれば動作確認は終了です。