it-swarm.com.de

Ändern des Standardfelds "Betreff" für Überprüfungs-E-Mails in Laravel 5.7

Ich versuche das Standardfeld subject in der mit Laravel 5.7 gelieferten Bestätigungs-E-Mail zu ändern. Wie und wo ändere ich es? Ich habe überall und überall online gesucht. Weil es brandneu ist, kann ich keine Antwort finden. Kannst du mir bitte helfen? Vielen Dank!

5
GabMic

Sie müssen nichts kodieren. Die Benachrichtigung enthält alle Zeichenfolgen in der Lang-Klasse, sodass Sie Übersetzungszeichenfolgen von Englisch in eine andere Sprache oder sogar Englisch in Englisch bereitstellen können, wenn Sie nur die Formulierung ändern möchten.

Schauen Sie in /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.'));
}

Sie können alle Zeichenfolgen dort sehen.

Erstellen Sie eine Datei en.json, wenn Sie noch keine Datei im Ordner resources/lang haben.

fügen Sie den ursprünglichen String und den Ersatz hinzu

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

Um in eine andere Sprache zu übersetzen, ändern Sie das Gebietsschema in config/app.php und erstellen Sie eine Übersetzungsdatei mit locale.json

5
Snapey

Dies ist das Merkmal 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);
    }
}

Wie Sie sehen, wird eine Benachrichtigung mit dem Namen VerifyEmail gesendet. Daher würde es ausreichen, diese Methode auf dem Benutzermodell mit Ihrer eigenen Benachrichtigung zu überschreiben. Sie sollten auch diese Datei überprüfen: vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php, Da sie die Benachrichtigung enthält und als Beispiel für Ihre benutzerdefinierte Bestätigungsbenachrichtigung dienen kann.

In User.php

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

Dann renne

php artisan make:notification MyNotification

Und in Ihrer Benachrichtigung können Sie einfach auf Illuminate\Auth\Notifications\VerifyEmail Erweitern.

Dann können Sie die Benachrichtigungsfunktion für E-Mail überschreiben ... Sie haben es noch nicht ausprobiert, aber das sollte funktionieren.

11
Erubiel

Können Sie Ihre Funktion dort posten, wo Sie E-Mails senden? Ich benutze:

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

Das heißt: Senden Sie eine E-Mail an den Benutzer $, legen Sie den Betreff fest, kopieren Sie die Kopie ein und senden Sie die E-Mail, während Sie den Benutzer übergeben. Dies ist auch für Markdown-Mail. Sie verwenden den ->-Operator, um alle Extras für die E-Mail hinzuzufügen. Sie können also in BCC (wie ich es getan habe) und auch CC usw. hinzufügen.

0
party-ring