Laravelでユーザー登録のVerificationNotificationメールをHTMLメールじゃなくてtextメールにして日本語化する

# HTMLメールは到達率が低い

HTMLメールよりテキストメールの方が一般ユーザーには到達率が高い。
しかし、Laravelの通知メールはHTMLが基本になっている。
ユーザー登録時に送信するverification noticeのメールをテキスト形式にして、日本語化する。
> 備考：HTMLメールがすごく嫌いな人がたまにいる。（私じゃないです）

# VerificationNotificationをカスタマイズ
# User.phpのimplementsにMustVerifyEmailを指定

```php
class User extends Authenticatable implements MustVerifyEmail
```

## User.phpにsendEmailVerificationNotification（）関数を追加

```php
    /**
     * メール確認通知の送信
     *
     * @return void
     */
    public function sendEmailVerificationNotification()
    {
        $customVerifyEmail = new CustomVerifyEmail();
        $this->notify($customVerifyEmail);
        $customVerifyEmail->toMail($this);
    }
```

確認メールを送りたいタイミングで
$user->sendEmailVerificationNotification()を呼ぶ。

## CustomVerifyEmail.phpを変更

```php
    public function via($notifiable)
    {
        return ['mail'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param mixed $notifiable
     * @return MailMessage
     */
    public function toMail($notifiable)
    {
        $myActionText = __('Verify Email Address'); // $myActionText = "Verify Email Address"
        $myActionUrl = $this->verificationUrl($notifiable);
        $mailMessage = (new MailMessage)
            ->subject(__('【初回】ご登録ありがとうございます'))
//            ->view('emails.verify', ['myActionUrl' => $myActionUrl]) // HTMLメール化したい場合はこのコメントを外す  resources/views/emails.verify.blade.phpの内容がHTMLメールで送られる
            ->action($myActionText, $myActionUrl);
        return $mailMessage;
    }
```


## 案内するテキストを変更する

toMail関数でview('emails.verify'...)の箇所を無効化したので、
デフォルトの文面のメールが届く。


```text
[DummyDep](http://dummydep.jp)

Verify Email Address: http://dummydep.jp/email/verify/880000002/4bfd564145610aacdfd3274ebbd150ba1fbef2cf?expires=1643955584&signature=3dffc5bb10e11d1a2b5e2e3b156ee3041a272b45914a7f3e2e27c925dc9349b4

Regards,
DummyDep

If you’re having trouble clicking the "Verify Email Address" button, copy and paste the URL below
into your web browser: [http://dummydep.jp/email/verify/880000002/4bfd564145610aacdfd3274ebbd150ba1fbef2cf?expires=1643955584&signature=3dffc5bb10e11d1a2b5e2e3b156ee3041a272b45914a7f3e2e27c925dc9349b4](http://dummydep.jp/email/verify/880000002/4bfd564145610aacdfd3274ebbd150ba1fbef2cf?expires=1643955584&signature=3dffc5bb10e11d1a2b5e2e3b156ee3041a272b45914a7f3e2e27c925dc9349b4)

© 2022 DummyDep. All rights reserved. 
```

# メール文をカスタマイズ

メール文はこんなところにあった。vendor以下にあった。でもvendor直下を直接書き換えちゃだめ。
vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php 

```php
php artisan vendor:publish --tag=laravel-mail

```
vendor:publishでvendor以下にあるテンプレートを /resources/views/vendor/mail に持ってきてこっちを編集する。

```php
@component('mail::message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level === 'error')
# @lang('Whoops!')
@else
# @lang('Hello!')
@endif
@endif

{{-- Intro Lines --}}
@foreach ($introLines as $line)
{{ $line }}

@endforeach

{{-- Action Button --}}
@isset($actionText)
<?php
    switch ($level) {
        case 'success':
        case 'error':
            $color = $level;
            break;
        default:
            $color = 'primary';
    }
?>
@component('mail::button', ['url' => $actionUrl, 'color' => $color])
{{ $actionText }}
@endcomponent
@endisset

{{-- Outro Lines --}}
@foreach ($outroLines as $line)
{{ $line }}

@endforeach

{{-- Salutation --}}
@if (! empty($salutation))
{{ $salutation }}
@else
@lang('Regards'),<br>
{{ config('app.name') }}
@endif

{{-- Subcopy --}}
@isset($actionText)
@slot('subcopy')
@lang(
    "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
    'into your web browser:',
    [
        'actionText' => $actionText,
    ]
) <span class="break-all">[{{ $displayableActionUrl }}]({{ $actionUrl }})</span>
@endslot
@endisset
@endcomponent

```


##