# Laravel notification メール通知カスタマイズ

Laravel の通知機能(Notification)は、メール、データベース、Slack、SMS などの通知を送信するための仕組みです。

環境

  • Laravel 10
  • Docker
  • Sail

# 通知クラスを生成

php artisan make:notification MyNotification

MyNotification という通知クラスが app/Notifications ディレクトリに生成されます。

# 通知クラスの編集

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class MyNotification extends Notification
{
    use Queueable;

    /**
     * Create a new notification instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the notification's delivery channels.
     *
     * @return array<int, string>
     */
    public function via(object $notifiable): array
    {
        return ['mail'];
    }

    /**
     * Get the mail representation of the notification.
     */
    public function toMail(object $notifiable): MailMessage
    {
        return (new MailMessage)
                    ->line('The introduction to the notification.')
                    ->action('Notification Action', env('FRONT_URL').'/verify/mail')
                    ->line('Thank you for using our application!');
    }

    /**
     * Get the array representation of the notification.
     *
     * @return array<string, mixed>
     */
    public function toArray(object $notifiable): array
    {
        return [
        ];
    }
}

# User model 編集

<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use App\Notifications\UserVerifyNotification;
class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

MustVerifyEmail 使わないため、コメントアウトしておきます。

# 通知を送信

// Userモデルで通知を送信する
use App\Notifications\MyNotification;

$user->notify(new MyNotification());

上記の例では、MyNotification 通知が$user モデルに対して送信されます。通知は、ユーザーに関連付けられた E メールアドレスなどの通知先を使用して送信されます。

# メール内容カスタマイズ

php artisan vendor:publish --tag=laravel-notifications                                                                                                                                                  ──(Wed,Nov22)─┘

#  INFO  Publishing [laravel-notifications] assets.  

#  Copying directory [vendor/laravel/framework/src/Illuminate/Notifications/resources/views] to [resources/views/vendor/notifications] ......... DONE
2023-11-22
  • laravel

関連記事

Laravel メンテナンスモード
Laravel model で hidden に設定したカラムを一時解除
Laravel でカテゴリー作成 テーブル構築と再帰クエリ
Laravel Queue で非同期処理
Laravel lang バリデーションメッセージを多言語対応
Laravel を API サーバーとしての初期設定
Laravel リクエストログ出力
Laravel 429 Too Many Requests
Laravel Email バリデーションについて
Laravel Sanctum 使って API トークン JWT 認証と SPA 認証
AWS SES メール開封確認  DB に集計
Laravel logger でエラーログを chatwork に自動送信
Laravel tinker 使って DB データベース接続とコマンド
Laravel Test についてのメモ
Laravel Log の基本設定&使い方
Laravel Sail で Docker 環境構築
Laravel Lumen Faker 日本語設定
laravel method の基本 get post put options
Laravel schedule 設定
Laravel eloquent model の規約
Laravel timestamp() auto update 有効化無効化
Laravel toSql パラメータ付きで出力
Laravel blade foreach loop と current url
laravel session を制する
Laravel 5.1 から 8.1 にバージョンアップ
Lumen と Laravel 違い比較
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定