LoginSignup
11
18

More than 3 years have passed since last update.

Laravelにおけるメール送信方法まとめ

Last updated at Posted at 2019-09-30

やること

1.Mailableクラスの作成(app/mailディレクトリ)
2.Mailableクラスにbuild()の記載(textやsubjectメソッドの指定など)
3.mailファザードのtoメソッドを記載
4.メールテンプレートの作成

Mailableクラス

 Laravelではメール送付のためのクラスとして、
 Mailableクラスがある。


php artisan make:mail クラス名

 を実行するとapp/Mailディレクトリにクラスが作成される。

Mailableクラスで使えるメソッド

mailableクラスの設定は、buildメソッド中で行う。
Mailableクラスで記載のクラス内にすでにbuildメソッドがあるので、
その中で記載していく。

  • from:メールの送信者を指定
  • with:テンプレートビューへデータを渡す(メール内でファイル名やIDを表示する場合など)
  • subject:メールタイトルを指定
  • text:メールを平文テキストで送付する際にtextメソッドでテンプレートを指定する
  • view:メールをHTMLで送付する際にtextメソッドでテンプレートを指定する

なお、text,viewのテンプレートの場所は引数で指定する。


/**
 * メッセージの生成
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->from('example@example.com');
}

メール送付のためのクラスの呼び出し

クラスの呼び出しはmailファザードのtoメソッドを使用することでメールを送付することが可能。
引数に宛先を渡してあげ、sendメソッドに渡す。
コントローラーに記載とLaravelリファレンスでは書いてあるが、
処理次第ではコントローラー以外でも問題なさそう。


Mail::to(宛先)->send(new Mailableのクラス名($パラメーター));

テンプレートの作成

textまたはviewで指定したディレクトリ配下にテンプレートを作成する。
テンプレートは通常Blade テンプレートで記載する。
Blade テンプレートなので、Withで渡した引数をテンプレート内で{{ @変数名 }}で使用可能。


class CompleteMail extends Mailable
{
    use Queueable, SerializesModels;

    // パラメータ
    public $parameter;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($parameter)
    {
        $this->parameter = $parameter;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        $q_id = $this->parameter['q_id']
        return $this->view('emails.orders.shipped')
                    ->from('example@example.com');
                    ->with([
                        'q_id' => $q_id
                    ])
    }

この度はお問合いただきまして誠にありがとうございます。

─────────■ 問い合わせID ■──────────
{{ @q_id }}

今後とも、よろしくお願いいたします。

ローカル開発時の動作確認

メールログは、
ConfigのMail.phpにあるdriverを

 'driver' => 'log',
  'pretend' => false,

に変更することでLog上にメールタイトルから宛先、本文などが落ちるようになる。


参考
Laravelリファレンス

11
18
3

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
11
18