MailHog入れるときはmhsendmailも忘れずに
開発環境のメール受信には長らくMailCatcherを使ってきたんですが、最近はMailHogが熱いっぽいので乗り換えることにしました。
開発環境はVagrantにCentos7を入れてます。
MailHog自体の導入自体はこの記事あたりを参考にすぐできました。 qiita.com
が、CLからのメール送信はできるのにブラウザからメールの送信ができないという状況に陥りました。
http://localhost:8025/で画面が表示され、
php -r "\$from = 'sender@test.com' \$to = 'recipient@test.com'; \$x = mail(\$to, 'subject'.time(), 'Test email', 'From: '. \$from); var_dump(\$x);"
ワンライナーでメールを送受信できるところまで確認できました。
更に念の為上記のワンライナーと同じような簡単なメール送信用のPHPファイル(mail.php)を作成してCLから実行できることまで確認。
が、教育用に作成していた模範解答の入力フォーム(素のPHPファイル)のメール送信でmb_send_mail()からどうやってもfalseが返る。 ソースが間違っているのかと思って試しにドキュメントルートに先程のmail.phpを移動してブラウザから叩いてみたところ同じくfalse。
んー?
ここからめっちゃ悩んでTwitterで暴れようかと思ったんですが、PHPはsendmailがないとメール送信できないとかなんとかいう記事を発見。
普段メール周りなんてFWがどうにかしてくれてるので意識してなかった。
悲しい🥺
さっそくsendmail入れたけど上手くいかない。
これはどっかしらの設定が悪かったんだと思いますが、よくよくMailHogのGitHub読むと
mhsendmail is a sendmail replacement for MailHog.
という一文が。
最初に公式ちゃんと読めよ数時間前の自分🤢
MailHogの場合はmhsendmailを一緒に入れてあげるとSMTPポート1025を使ってメール送信してくれるらしい。
これだー!💪💪💪
ということで公式と他の記事も参考にしつつmhsendmailを導入。
blog.mailtrap.io
php.iniも修正し、これでちゃんと動くようになりました。
教育資料として配布予定だったのでVagrantを立ち上げたときに自動起動してくれるようにしました。
ググってたら丁度いい感じのgistが!神様!ありがとう!
MailHogしか入ってないのでこのgistをパクr参考にmhsendmailも一緒に入れるようにしました。
php.iniはVagrant初回起動時に予め用意しておいたiniファイルとVagrant内のiniを差し替える作りにしていたので、置き換える用のiniファイルを修正。
念の為、一度Vagrantをdestroyしてupし直してすべての動作を確認。
おわったー😭
久々にこんなに詰まった。
悲しいのでラーメン食べてファミマのチョコバナナのもちもちクレープ買って帰りました😊
www.family.co.jp