前回、Laravelでお問い合わせフォームを作成しました。
しかしSMTPサーバでメールを送信するのではなく、ログに出力するやり方をしました。
今回は実際にメールを送信してみます。
まずは、ローカル環境でも気軽るに確認できるように mailtrap というサービスを利用します。
なお、スクリプトに関しては前回のチュートリアルで作成したスクリプトを利用します。
なので、今回は設定内容を変えるだけになります。
mailtrapとは
mailtrap.ioとは仮想のsmtpテストサーバーです。
SMTPでメールを送信しても実際の宛先には飛ばさず、WebサイトやAPIから確認することができるというサービスです。
Laravelではデフォルトの設定でmailtrapが設定されています。
.envファイルを見ると以下のように記述されています。
: MAIL_DRIVER=smtp #メールドライバー(メールの送信手段)を設定する。 MAIL_HOST=mailtrap.io #メールサーバのホスト名またはIPアドレスを設定する。 MAIL_PORT=2525 #メールポートを設定する。 MAIL_USERNAME=null #SMTPのユーザ MAIL_PASSWORD=null #SMTPのパスワード MAIL_ENCRYPTION=null #暗号化の方法を指定する。
ご覧のとおり、MAIL_HOSTの値はmailtrapになっています。
それでは実際に使ってみます。
チュートリアル
SMTPサーバに mailtrap を設定してローカル環境でメール送信をしてみます。
流れ
1)ユーザー登録
2).envファイルの設定
3)config/mail.phpの設定
4)動作確認
1)ユーザー登録
mailtrapの公式サイト mailtrap.io にアクセスしてサインアップします。
メールアドレスとパスワードだけで登録できます。
サインアップが終わると確認用のメールが飛んできますのでリンクをクリックしたら登録完了です。
2).envファイルの設定
Inboxesのなかから既に作成されているDemo InboxをクリックするとInboxの詳細が表示されます。
SMTPのHOSTやAUTHのログインID、パスワードなどの情報が表示されるので、.envファイルに設定します。
MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME="mailtrapのユーザー名" MAIL_PASSWORD="mailtrapのパスワード" MAIL_ENCRYPTION=null
基本的にMAIL_USERNAMEとMAIL_PASSWORDだけコピペすればOKです。
mailtrapに記述されているsendmailのパスは config/mail.php にすでに記述されています。
3)config/mail.phpの設定
次に送信元アドレスがないとエラーになるのでconfig/mail.phpに送信元アドレスを入力します。
//'from' => ['address' => null, 'name' => null], 'from' => ['address' => "laravel@honjou.com", 'name' => "laravel学習帳"],
これでローカル環境でもテストメールができます。
実際にテストしてみます。
4)動作確認
それでは、実際にローカル環境でメール送信テストをやってみます。
入力画面
確認画面
送信完了画面
mailtrapの画面
上記のように確認できればOKです。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。