let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【Laravelでメールフォームその1】外部SMTPサーバー設定・日本語対応・コマンドでのファイル追加のしかた

更新: 2024/04/07 2663文字

今回は、PHPフレームワークLaravelを使って、メールフォームを作ってみます。ちょっと長いので2回くらいに分ける予定なんですが、必要な下準備として、『外部SMTPサーバー設定・日本語対応・コマンドでのファイル追加』をとりあげます。早速内容を確認していきましょう。

ローカルでメールを送れるように、外部SMTPサーバー設定してみる(.env編集)

Laravelには環境設定用の.envってファイルがあるんですけど、初期状態だと、特になにも設定されていません。ここはメール部分ですが、アドレスがexample.comになっているし。

この状態でメール送信しても派手にエラー吐きます。なので、管理人はこのサイト(読んどけコラム)で使っているロリポサーバーをメールサーバーにすることにしました。管理画面のメール部分で、smtp接続情報を確認して・・・

MAIL_MAILER=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などでは使っている方がわりと見受けられました。

言語関連の設定~日本語対応する

あと、メールについて調べていると『laravel-lang/publisherとlaravel-lang/lang・ja.json』などのファイルインストールが必要とわかりました。これらは日本語対応に必要なもので、バリデーションメッセージ日本語版などに使うようです。
まずは『laravel-lang/publisherとlaravel-lang/lang』をcomposerコマンドで入れます(コマンドのcdは管理人の環境でlaravel入れてる場所です)。

cd /xampp/htdocs/laravel/
composer require laravel-lang/publisher laravel-lang/lang –dev

次に、jaフォルダとja.jsonを作成します。これを元に、出力するメッセージを置き換えてるっぽいんですね。コマンドは以下の通り。Laravelのartisanコマンドを使います。

cd /xampp/htdocs/laravel/
php artisan lang:add ja

ja.jsonができました。日本語置きかえメッセージが色々入っています。たしかにこれをいちいち手作業で作っていたら、めんどいですね(笑)

Laravelメールフォームのコントローラー,Mailableクラスをコマンドで入れる

メール用コントローラー作成

まずは、メール用のコントローラーを用意します。外側はviewに任せるとして、裏でいろいろ処理するクラスですね。名前はMailForm01Controller.phpとします。コマンドは以下の通り。

cd /xampp/htdocs/laravel/
php artisan make:controller MailForm01Controller

ファイルができました。パスは『/app/Http/Controllers/MailForm01Controller.php』となります。

こんな感じのファイルができます(中身はこれから書いていきます)。また、後から作るMailableクラスを、useを使ってインポートしておきます。しておかないと、メソッド書いても見つかりませんみたいにエラーになります。

Mailableクラスの作成

次はMailableクラスの作成をします。Envelopeメソッドで『from』をセットしたり、bladeでメール本文をセットしたりするのに使いました。管理人は名前に『send』って書いちゃったけど、実際の送信処理は別クラスが行ったので、適切な名前に変えてみてください。

cd /xampp/htdocs/laravel/
php artisan make:mail MailForm01Send

上記のコマンドを実行するとファイルができます。パスは『/app/Mail/MailForm01Send.php』です。

ファイルはこんな感じ。送信まで行った段階だと『use Illuminate\Mail\Mailables\Address』のインポートは必要かなという印象です。Addressメソッドがあると、ヘッダーfrom情報のセットとかが簡単だからです。

あとがき・まとめ

  • Laravelメール送信で、外部のSMTPメールサーバーを設定できる
  • 日本語化、使用クラスは一から作るより、コマンドで入れるとラク

まとめると、こんなところでしょうか。次回はコントローラーやMailableクラス、ルーティング&bladeテンプレートをエディットして、実施にブラウザ操作でメールが送れる様態にしてみます。(次回の記事は下)


【カテゴリ】- PHP
【タグ】- ,

関連記事