Как изменить reset тему электронной почты для пароля в laravel?

Я начинаю в Ларавеле. В настоящее время я изучаю эту структуру. Моя текущая версия Laravel - 5.3.

Я использую my auth, используя php artisan make:auth Все работают нормально. Также я настроил gmail smtp в моем .env файле и mail.php в config directgory. Все отлично работают. Но я видел по умолчанию забытый пароль. Тема электронной почты идет Reset Password. Я хочу изменить это.

Я видел какой-то блог. Я нашел блог. Я реализую это на своем сайте. Но такой же выход будет.

Я следил за этими ссылками -

https://laracasts.com/discuss/channels/general-discussion/laravel-5-password-reset-link-subject

https://laracasts.com/discuss/channels/general-discussion/reset-password-email-subject

https://laracasts.com/discuss/channels/laravel/how-to-override-message-in-sendresetlinkemail-in-forgotpasswordcontroller

Ответ 1

Вы можете изменить свой пароль reset тему электронной почты, но для этого вам потребуется дополнительная работа. Во-первых, вам нужно создать свою собственную реализацию уведомления ResetPassword.

Создайте новый класс уведомлений внутри каталога app\Notifications, пусть назвали его ResetPassword.php:

<?php

namespace App\Notifications;

use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class ResetPassword extends Notification
{
    public $token;

    public function __construct($token)
    {
        $this->token = $token;
    }

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

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Your Reset Password Subject Here')
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', url('password/reset', $this->token))
            ->line('If you did not request a password reset, no further action is required.');
    }
}

Вы также можете сгенерировать шаблон уведомления с помощью команды artisan:

php artisan make:notification ResetPassword

Или вы можете просто скопировать-вставить вышеуказанный код. Как вы можете заметить, этот класс уведомления похож на стандартный Illuminate\Auth\Notifications\ResetPassword. Фактически вы можете просто расширить его из класса ResetPassword по умолчанию.

Единственное отличие здесь: вы добавляете новый вызов метода для определения темы электронной почты:

return (new MailMessage)
        ->subject('Your Reset Password Subject Here')

Подробнее о Mail Notifications здесь.

Во-вторых, в вашем файле app\User.php вам необходимо переопределить метод sendPasswordResetNotification() по умолчанию, определенный Illuminate\Auth\Passwords\CanResetPassword. Теперь вы должны использовать свою собственную реализацию ResetPassword:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Notifications\ResetPassword as ResetPasswordNotification;

class User extends Authenticatable
{
    use Notifiable;

    ...

    public function sendPasswordResetNotification($token)
    {
        // Your your own implementation.
        $this->notify(new ResetPasswordNotification($token));
    }
}

И теперь ваш субъект почты с паролем reset должен быть обновлен!

Reset тема электронной почты для пароля обновлена ​​

Надеюсь на эту помощь!

Ответ 2

Вы можете легко изменить класс уведомлений, используемый для отправки пользователю ссылки на сброс пароля. Для начала переопределите метод sendPasswordResetNotification в вашей пользовательской модели. В рамках этого метода вы можете отправить уведомление, используя любой выбранный вами класс уведомлений. Сброс пароля $token - это первый аргумент, полученный методом, см. Документ для настройки.

/**
 * Send the password reset notification.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}

Надеюсь, это поможет!

Ответ 3

В Laravel 5.7 реализация по умолчанию похожа на эту:

return (new MailMessage)
            ->subject(Lang::getFromJson('Reset Password Notification'))
            ->line(Lang::getFromJson('You are receiving this email because we received a password reset request for your account.'))
            ->action(Lang::getFromJson('Reset Password'), url(config('app.url').route('password.reset', $this->token, false)))
            ->line(Lang::getFromJson('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.users.expire')]))
            ->line(Lang::getFromJson('If you did not request a password reset, no further action is required.'));

Все, что вам нужно сделать, это изменить ваш locale с config/app.php, например, на ro, затем в вашем resources/lang создайте файл ro.json, подобный следующему:

{
  "Reset Password Notification": "Viața Medicală CMS :: Resetare parolă",
  "Hello!": "Salut,",
  "You are receiving this email because we received a password reset request for your account.": "Primești acest email deoarece am primit o solicitare de resetare a parolei pentru contul tău.",
  "Reset Password": "Reseteză parola",
  "This password reset link will expire in :count minutes.": "Acest link va expira în :count de minute.",
  "If you did not request a password reset, no further action is required.": "Dacă nu ai solicitat resetarea parolei, nu este necesară nicio altă acțiune.",
  "Regards": "Toate cele bune",
  "Oh no": "O, nu",
  "Whoops!": "Hopa!",
  "If youre having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "Dacă nu reușești să dai click pe butonul de \":actionText\", dă copy-paste la URL-ul de mai jos în browser:\n [:actionURL](:actionURL)"
}

Он будет переводить как тему (первый ключ), так и текст письма.

ОБНОВЛЕНИЕ для Laravel 6. *
Это также может быть использовано для уведомления VerifyEmail.php.

Ответ 4

Вы можете создать пользовательскую функцию, которая будет создавать маркер паролей reset, как это.

 $user = User::where('email', '[email protected]' )->first();
 $password_broker = app(PasswordBroker::class); //so we can have dependency injection
 $token = $password_broker->createToken($user); //create reset password token
 $password_broker->emailResetLink($user, $token, function (Message $message) {
         $message->subject('Custom Email title');
 });//send email.

Ответ 5

Просто добавьте строку:

- > subject ('New Subjetc')

в методе toMail файла Illuminate\Auth\Notifications\ResetPassword например:

public function toMail($notifiable)
{
    return (new MailMessage)
        ->subject('New Subjetc')
        ->line('You are receiving this email because we received a password reset request for your account.')
        ->action('Restaurar Contraseña', url(config('app.url').route('password.reset', $this->token, false)))
        ->line('If you did not request a password reset, no further action is required.');
}