如何在laravel中更改重置密码电子邮件主题?

2022-08-30 16:14:22

我是拉拉维尔的初学者。目前,我正在学习这个框架。我目前的Laravel版本是5.3。

我正在使用我的身份验证的脚手架所有工作正常。另外,我在我的.env文件和邮件中配置了gmail smtp.php在config directgory中。一切都完美无缺。但是我看到默认情况下忘记密码电子邮件主题正在进行。我想改变这种状况。php artisan make:authReset 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

您可以更改密码重置电子邮件主题,但这需要一些额外的工作。首先,您需要创建自己的 ResetPassword 通知实现。

在目录中创建一个新的通知类,让我们将其命名为:app\NotificationsResetPassword.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')

您可以在此处阅读有关邮件通知的更多信息。

其次,在您的文件上,您需要覆盖由 Illuminate\Auth\Passwords\CanResetPassword trait 定义的默认方法。现在,您应该使用自己的实现:app\User.phpsendPasswordResetNotification()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 password email subject updated

希望这有帮助!


答案 2

您可以轻松修改用于向用户发送密码重置链接的通知类。若要开始,请重写用户模型上的方法。在此方法中,您可以使用您选择的任何通知类发送通知。密码重置是该方法收到的第一个参数,请参阅自定义文档sendPasswordResetNotification$token

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

希望这有帮助!


推荐