【Laravelでメールフォームその1】外部SMTPサーバー設定・日本語対応・コマンドでのファイル追加のしかた
| 更新: 2024/04/07 | 2663文字
今回は、PHPフレームワークLaravelを使って、メールフォームを作ってみます。ちょっと長いので2回くらいに分ける予定なんですが、必要な下準備として、『外部SMTPサーバー設定・日本語対応・コマンドでのファイル追加』をとりあげます。早速内容を確認していきましょう。
目次
ローカルでメールを送れるように、外部SMTPサーバー設定してみる(.env編集)
Laravelには環境設定用の.envってファイルがあるんですけど、初期状態だと、特になにも設定されていません。ここはメール部分ですが、アドレスがexample.comになっているし。
この状態でメール送信しても派手にエラー吐きます。なので、管理人はこのサイト(読んどけコラム)で使っているロリポサーバーをメールサーバーにすることにしました。管理画面のメール部分で、smtp接続情報を確認して・・・
MAIL_HOST=smtp.lolipop.jp
MAIL_PORT=465
MAIL_USERNAME=サーバー割り当てドメインのメルアド
MAIL_PASSWORD=メールのパスワード
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=サーバー割り当てドメインのメルアド
MAIL_FROM_NAME="${APP_NAME}"
こんな感じで.envに記載しました。
なお、外部SMTPサーバーの設定をするほかに、仮想SMTPサーバーというのもあるらしく、Qiitaなどでは使っている方がわりと見受けられました。
仮想SMTPサーバー MailTrap
https://mailtrap.io
言語関連の設定~日本語対応する
あと、メールについて調べていると『laravel-lang/publisherとlaravel-lang/lang・ja.json』などのファイルインストールが必要とわかりました。これらは日本語対応に必要なもので、バリデーションメッセージ日本語版などに使うようです。
まずは『laravel-lang/publisherとlaravel-lang/lang』をcomposerコマンドで入れます(コマンドのcdは管理人の環境でlaravel入れてる場所です)。
composer require laravel-lang/publisher laravel-lang/lang –dev
次に、jaフォルダとja.jsonを作成します。これを元に、出力するメッセージを置き換えてるっぽいんですね。コマンドは以下の通り。Laravelのartisanコマンドを使います。
php artisan lang:add ja
ja.jsonができました。日本語置きかえメッセージが色々入っています。たしかにこれをいちいち手作業で作っていたら、めんどいですね(笑)
Laravelメールフォームのコントローラー,Mailableクラスをコマンドで入れる
メール用コントローラー作成
まずは、メール用のコントローラーを用意します。外側はviewに任せるとして、裏でいろいろ処理するクラスですね。名前はMailForm01Controller.phpとします。コマンドは以下の通り。
php artisan make:controller MailForm01Controller
ファイルができました。パスは『/app/Http/Controllers/MailForm01Controller.php』となります。
こんな感じのファイルができます(中身はこれから書いていきます)。また、後から作るMailableクラスを、useを使ってインポートしておきます。しておかないと、メソッド書いても見つかりませんみたいにエラーになります。
Mailableクラスの作成
次はMailableクラスの作成をします。Envelopeメソッドで『from』をセットしたり、bladeでメール本文をセットしたりするのに使いました。管理人は名前に『send』って書いちゃったけど、実際の送信処理は別クラスが行ったので、適切な名前に変えてみてください。
php artisan make:mail MailForm01Send
上記のコマンドを実行するとファイルができます。パスは『/app/Mail/MailForm01Send.php』です。
ファイルはこんな感じ。送信まで行った段階だと『use Illuminate\Mail\Mailables\Address』のインポートは必要かなという印象です。Addressメソッドがあると、ヘッダーfrom情報のセットとかが簡単だからです。
Laravel 10.x メール(マニュアル)
https://readouble.com/laravel/10.x/ja/mail.html
あとがき・まとめ
- Laravelメール送信で、外部のSMTPメールサーバーを設定できる
- 日本語化、使用クラスは一から作るより、コマンドで入れるとラク
まとめると、こんなところでしょうか。次回はコントローラーやMailableクラス、ルーティング&bladeテンプレートをエディットして、実施にブラウザ操作でメールが送れる様態にしてみます。(次回の記事は下)
【Laravelメールフォームその2】コントローラー・Mailableクラス・ルーティング・bladeテンプレート設定のしかた
https://division-web.atelier-ss-agency.com/10049/
【カテゴリ】- PHP
【タグ】- Laravel, メールフォーム