1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?