LoginSignup
1
1

More than 3 years have passed since last update.

【Laravel】メール送信機能

Last updated at Posted at 2020-08-11

はじめに

問い合わせフォームで問い合わせがあった場合に、内容をメールで通知するシステムを組んだ際の備忘録。

LaravelのMailableクラスを利用し送信します。

ファイル構成

Project
 |-app
 |  |- Http
 |  |  |- **SendController.php
 |  |
 |  |- Mail
 |    |- **SendMail.php
 |
 |-resources
 |  |- views
 |    |- contact
 |      |- mail.blade.php
 |
 |-.env

コード

Controller

sendメソッドの引数に、Mailableクラスを継承したクラスを渡す。

SendController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;

class SendController extends Controller
{

    public function submit(Request $req){

      //メールを送信
      Mail::to("送信先アドレス")
      ->send(new SendMail($req['message']));

      return view('sample');
    }
}

Mailableクラス

コンストラクタで表示するメッセージリストを受け取る。
buildメソッドで、あらかじめ準備したbladeを利用して本文を作成する。
HTMLメールの場合viewメソッド、通常テキストの場合textメソッドを使う。

SendMail.php
<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class SendMail extends Mailable
{
    use Queueable, SerializesModels;

    protected $message;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        //コンストラクタで表示するメッセージを受け取る
        $this->message = $message;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->text('contact.mail')
                    ->subject('件名')
                    ->with(['message' => $this->message]);
    }
}

View

変数を展開して本文を作成する。

mail.blade.php

問い合わせが来ました。

---------------------
名前:{{$message->name}}
アドレス:{{$message->address}}
内容:{{$message->body}}
---------------------

.env

.envにメールサーバの情報を記載する。

.env

MAIL_MAILER=smtp
MAIL_HOST=***
MAIL_PORT=***
MAIL_USERNAME=***
MAIL_PASSWORD=***
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=***
MAIL_FROM_NAME="${APP_NAME}"

参考
Laravelでメール送信する

最後に

利用するサーバの情報が間違っていてはまりました。
処理を何度も見直したことで理解が深まったのでOK!!!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1