ぎゅんとねこ

にゃんころブログにするつもりがネタとやる気が尽きてしまい結局技術ブログと混じりだしたナニカ

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で暴れようかと思ったんですが、PHPsendmailがないとメール送信できないとかなんとかいう記事を発見。
普段メール周りなんてFWがどうにかしてくれてるので意識してなかった。
悲しい🥺

さっそくsendmail入れたけど上手くいかない。
これはどっかしらの設定が悪かったんだと思いますが、よくよくMailHogのGitHub読むと

mhsendmail is a sendmail replacement for MailHog.

という一文が。
最初に公式ちゃんと読めよ数時間前の自分🤢

MailHogの場合はmhsendmailを一緒に入れてあげるとSMTPポート1025を使ってメール送信してくれるらしい。

これだー!💪💪💪
ということで公式と他の記事も参考にしつつmhsendmailを導入。 blog.mailtrap.io

php.iniも修正し、これでちゃんと動くようになりました。

教育資料として配布予定だったのでVagrantを立ち上げたときに自動起動してくれるようにしました。
ググってたら丁度いい感じのgistが!神様!ありがとう!

gist.github.com

MailHogしか入ってないのでこのgistをパクr参考にmhsendmailも一緒に入れるようにしました。
php.iniはVagrant初回起動時に予め用意しておいたiniファイルとVagrant内のiniを差し替える作りにしていたので、置き換える用のiniファイルを修正。

念の為、一度Vagrantをdestroyしてupし直してすべての動作を確認。
おわったー😭

久々にこんなに詰まった。
悲しいのでラーメン食べてファミマのチョコバナナのもちもちクレープ買って帰りました😊 www.family.co.jp