仮想通貨ブログに専念するため、たまーに更新します!仮想通貨ブログはこちら!

LaravelでMail送信のサンプルを作成してみた件

  • URLをコピーしました!
悩んでいる男の子

Laravelでメール送信のサンプルを作りたいんだけど、よく分からないから教えてほしいな。
具体的なソースコードもあると嬉しいかも。

こんな悩みを解決します。

  • 本記事の内容
  • Laravelでのメール送信プログラム作成方法
  • メール送信の具体的なソースコード
  • 本記事の執筆者
いずみん(@izumin_0401)

今回は、LaravelでMail送信のサンプルを作成してみます。

いずみん

本記事を読めばLaravelでのメール送信が理解できるので、是非最後まで読んでみてください!

プログラミングを学びたい方必見!

オンライン特化のプログラミングスクールなら「」が超おススメ!

副業としてプログラミングを学びたい方にもおすすめのスクールです!

  • 初心者が9割以上なので挫折せずに学べる!
  • 受講者に副業の仕事を1案件以上斡旋! ※条件あり
  • オンライン完結型なので、在宅でもお仕事可!
  • プロのメンターがサポートしてくれる!

キャリアカウンセリングメンター相談無料でできるのもおすすめポイントです!

目次

Mail送信サンプル作成の前に

今回は、実際のメール送信までは行いません。

メールサーバがないのと、メールドライバを「log」に設定するとメールの内容をログに出力してくれるので、ログを確認するだけで十分担保できます。

Mail送信サンプル作成手順

早速作成していきます。

まず、メールの設定ですが、基本的には「.env」と「config/mail.php」で設定されています。

.envの設定

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O6KzNSTcrd9b/I1a0LTkOETCSXAW0oPGMsVJ8QlWJT4=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=test_db
DB_USERNAME=test_user
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=kohei.izumi@sample.com
MAIL_FROM_NAME=K.Izumi

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MAIL_FROM_ADDRESS」「MAIL_FROM_NAME」の設定を追記しました。

平文メールの作成

Laravelでは平文メールとHTMLメールの2種類を作成できますが、今回は平文メールを作成します。

メールが来たよーーー。

{{ $text }}

上記が平文メールの内容になります。

メールはbladeで作成するので、当然変数の展開も可能です。

クラスの作成

Laravelには「Mailable」クラスという、メールを扱うクラスがあります。

これもphp artisanコマンドで作成できるのでサクッと作っていきます。

php artisan make:mail SampleMail

上記で「SampleMail」というクラスを作成しました。

<?php

namespace App\Mail;

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

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->view('sample_mail')
                    ->from(config('mail.from.address'))
                    ->subject('メール')
                    ->with([
                        'text' => 'ぽえぽえー',
                      ]);
    }
}

適当ですが、build関数内を少し修正しました。

コントローラの作成

本来ならロジックはサービスに記載したいのですが、説明の便宜上、コントローラにロジックを記載します。

<?php

namespace App\Http\Controllers;

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

class MailController extends Controller
{
    public function __construct() { }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function store()
    {
        Mail::to('<あなたのTOアドレス>')->send( new SampleMail() );
    }
}

ルーティングの設定

Route::resource('mail', 'MailController', ['only' => ['store']]);

POST時にコントーローラを呼ぶよう追記しました。

laradock@166d6d4773e7:/var/www$ php artisan route:list
+--------+----------+----------+------------+-------------------------------------------+------------+
| Domain | Method   | URI      | Name       | Action                                    | Middleware |
+--------+----------+----------+------------+-------------------------------------------+------------+
|        | GET|HEAD | /        |            | Closure                                   | web        |
|        | POST     | api/mail | mail.store | App\Http\Controllers\MailController@store | api        |
|        | GET|HEAD | api/user | user.index | App\Http\Controllers\UserController@index | api        |
+--------+----------+----------+------------+-------------------------------------------+------------+

ルーティングが追加されています。

メール送信の前に

ログに出力するよう設定を変更します。

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O6KzNSTcrd9b/I1a0LTkOETCSXAW0oPGMsVJ8QlWJT4=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=test_db
DB_USERNAME=test_user
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=kohei.izumi@sample.com
MAIL_FROM_NAME=K.Izumi

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MAIL_DRIVER」を「log」にすることで、ログにメールの内容が出力されます。

メール送信

上記のようにPOSTで送信すると200が返ってきました。

[2020-03-08 04:39:15] local.DEBUG: Message-ID: <d122227a234ec3002a03f65170e6eb85@localhost>
Date: Sun, 08 Mar 2020 04:39:13 +0000
Subject: =?utf-8?Q?=E3=83=A1=E3=83=BC=E3=83=AB?=
From: kohei.izumi@sample.com
To: <あなたのTOアドレス>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

メールが来たよーーー。

ぽえぽえー

ログにも正しく出力されていますね。

まとめ

今回は、LaravelでMail送信のサンプルを作成してみました。

ドライバを「log」にすると、ログにメールの内容が出力されるのが素敵ですね。

ではまた!

  • おすすめ本はこちら!
いずみん

僕は↑の本でLaravelの勉強をしました!
非常に分かりやすいのでおすすめです!

  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

稼ぐスキルを身に付けよう!!
SNSもフォローしてね!

この記事が気に入ったら
いいね または フォローしてね!

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!
目次