Laravelでメールの送信方法
Laravelでメールの送信方法を書いていきます。
今回はGmailでメールを送る方法でやっていきます。
まず、Googleアカウントの設定でセキュリティの2段階認証をオンにします
そしたら、その下のアプリパスワードの所を開き、アプリをメール、デバイスをお使いのデバイスに合わせます。今回はwindowsパソコンでやるので画像のようにしています。
そして、生成ボタンを押すと16桁のパスワードが発行されるのでコピーしておきます。
次にファイルの設定をしていきます。
まず、.envファイルを以下のように変更します。
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=メールアドレスを記載(下のFROMと同じで良い) MAIL_PASSWORD=発行したアプリパスワードの設定 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=どのアドレスから送信するかを記載 MAIL_FROM_NAME=メールの件名
次に以下のコマンドでメール送信クラスであるmailableクラスを生成します。
php artisan make:mail クラス名
ファイルはデフォルトの状態であればapp/Mailにできます。
今回はmailableクラス名をSampleMailで作っています。
中身を書き足します。
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class SampleMail extends Mailable { use Queueable, SerializesModels; /** * Create a new message instance. * * @return void */ public function __construct() { // } /** * Build the message. * * @return $this */ public function build() { return $this // 送信元 ->subject('テスト送信') // メールタイトル ->view('sample_mail'); // メールの本文となるviewを設定 } }
public function build()の中に書き足していきます。他にもwithとか色々設定できるので調べてみてください。
次にコントローラーの設定をしていきます。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; // 追加 use App\Mail\SampleMail; //さっき作ったmailableクラス class MailController extends Controller { // public function SendMail(){ Mail::to(送信先のメールアドレス)->send(new SampleMail); } }
送信先を複数にできたり、SampleMailに変数を渡すこともできるのでお好きにカスタマイズしてください。
次にメールの本文を作っていきます。
<p>テストメールの送信です。</p>
mailableクラスで設定したviewに書いてください。
作成場所はviewsの中ならどこでも構いません。
最後にルーティングの設定をします。
Route::get('/mail','MailController@SendMail');
これで設定したURLにアクセスするとメールが届きます。
仮に送信できなかった場合はconfig/mail.phpの中身を.envファイルと同じようにすると送信できるかもしれません。