web-dev-qa-db-ja.com

Laravel 5.7の確認メールのデフォルトの[件名]フィールドを変更する

Laravel 5.7に添付されている確認メールのデフォルトのsubjectフィールドを変更しようとしています。どのように、どこで変更しますか?あちこちで検索しましたオンラインです。新しいので、答えが見つかりません。

6
GabMic

何もコーディングする必要はありません。通知にはすべての文字列がLangクラスでラップされているため、英語から別の言語への翻訳文字列を提供したり、表現を変更したいだけの場合は英語から英語への翻訳文字列を提供したりできます。

/vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.phpを確認します

public function toMail($notifiable)
{
    if (static::$toMailCallback) {
        return call_user_func(static::$toMailCallback, $notifiable);
    }

    return (new MailMessage)
        ->subject(Lang::getFromJson('Verify Email Address'))
        ->line(Lang::getFromJson('Please click the button below to verify your email address.'))
        ->action(
            Lang::getFromJson('Verify Email Address'),
            $this->verificationUrl($notifiable)
        )
        ->line(Lang::getFromJson('If you did not create an account, no further action is required.'));
}

そこにすべてのストリングが表示されます。

まだresources/langフォルダーにファイルen.jsonがない場合は作成します。

元の文字列と置換を追加します。例えば

{
    "Verify Email Address": "My preferred subject",
    "Please click the button below to verify your email address.":"Another translation"
}

別の言語に翻訳するには、config/app.phpでロケールを変更し、locale.jsonで翻訳ファイルを作成します

10
Snapey

これはMustVerifyEmailトレイトです

<?php

namespace Illuminate\Auth;

trait MustVerifyEmail
{
    /**
     * Determine if the user has verified their email address.
     *
     * @return bool
     */
    public function hasVerifiedEmail()
    {
        return ! is_null($this->email_verified_at);
    }

    /**
     * Mark the given user's email as verified.
     *
     * @return bool
     */
    public function markEmailAsVerified()
    {
        return $this->forceFill([
            'email_verified_at' => $this->freshTimestamp(),
        ])->save();
    }

    /**
     * Send the email verification notification.
     *
     * @return void
     */
    public function sendEmailVerificationNotification()
    {
        $this->notify(new Notifications\VerifyEmail);
    }
}

ご覧のとおり、VerifyEmailという名前の通知を送信しているので、ユーザーモデルでこのメソッドを独自の通知でオーバーライドするだけで十分だと思います。このファイルも確認してください:vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php通知が含まれており、カスタム確認通知の例として使用できるため。

User.php

    public function sendEmailVerificationNotification()
    {
        $this->notify(new MyNotification);
    }

次に実行します

php artisan make:notification MyNotification

そして、あなたの通知では、Illuminate\Auth\Notifications\VerifyEmail

次に、通知toMail関数をオーバーライドできます...まだ試してはいませんが、うまくいくはずです。

12
Erubiel

メールで送信する関数を投稿できますか?私が使う:

\Mail::to($user)->subject('Your Subject')->bcc([$reports,$me])->send(new Declined($user));

つまり、$ userにメールを送信し、件名を設定し、ブラインドコピーを挿入してから、ユーザーに渡しながらメールを送信します。これも値下げメール用です。 ->演算子を使用してメールのすべてのエクストラを追加します。これにより、BCC(私が行ったように)やCCなどを追加できます。

0
party-ring