Laravelでの開発にmailtrapを使う
こんにちは、seoです。
最近だとユーザーに何かを知らせるときにはPush通知やSNSの通知を使うことが多いですが、 まだまだ使われているのがメール。 ここ最近Laravelでメールを使うサービスを作った時にmailtrapを使ったのでその時のメモ。 昔、自分でメールを使うサービスを作った時に自分のメールボックスがとてつもない量のテストメールで溢れていたことを 思い出しながら書きました。
mailtrapの準備
今回、mailtrapと言うサービスを使いました。
mailtrapって?
mailtrapの本体サイトには
“Mailtrap is a fake SMTP server for development teams to test, view and share emails sent from the development and staging environments without spamming real customers.”
と書いてある。 そのままその通り、開発用の疑似SMTPサービスです。
メール機能開発後は必ずテストが必要ですが、宛先を間違って送ってしまうと取り戻せないし、 テストメールが自分のメールボックスに山の様に来ても困る。 想定した宛先に送られているかも心配。
それらの悩みを解決してくれるニセのSMTPサーバを提供してくれるサービスです。
料金はタダ
金額は発行できるメールアドレスやメールボックスの数で決まるようです。 タダでも利用できます。 今回は自分ひとりの開発なので、Freeプランにしました。
※あまり意識してなかったけど、Laravelの.env.sampleのメールホスト名にデフォルトでmailtrapのM記載されていました。
アカウントの作成
まずはアカウントの作成。
mailtrapのサイトにアクセスし、画面右上の「Sign up」をクリック。
メールアドレスとパスワードを入力すると、入力したアドレスに対して登録メールが送られてきます。
リンクをクリックしてログインを実施、メールボックスの画面が出てきたら完了。
laravel側の準備
今回はLaravel5.5を使いました。 Laravel5.5はインストールされた前提で進めますね。
設定
Laravel側の設定は、まずはenvファイルの準備、 先程登録したMailtrapのメールボックスのTOPに行くと、以下の様なSMTPの情報が表示されます。
ここにある情報をそれぞれ、.envファイルに記述
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME={Usernameの値}
MAIL_PASSWORD={Passwordの値}
MAIL_FROM_ADDRESS={送信元アドレス、おそらく何でも可能}
MAIL_FROM_NAME={送信者名、おそらく何でも可能}
MAIL_PRETEND=false
MAIL_ENCRYPTION=tls
メール送信してみる
画面やJOBを作ったりするのは大変なので、今回はLaravelのREPLであるTinkerを使ってメールを送信してみる。 php artisan でtinkerを実行し、入力を受け付ける状態にする。
$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.2.0beta3 — cli) by Justin Hileman
>>>
この状態で、以下の様にメール送信を実効する。 nullと表示されれば成功
>>> Mail::raw('テスト本文ですよ!', function($message) {$message->to('test@example.com')->subject('テストタイトル');});
=> null
上記を実行して、mailtrapのメールBOXを見てみると。
送られている。 これで自分のメールボックスが汚れたり、友達に間違って送ったりしていないかハラハラする生活から 少しだけ脱せそうな気がします。笑