当前位置: 首页 > 知识库问答 >
问题:

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

齐永昌
2023-03-14

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

我正在使用php artisan make:auth构建我的auth,所有这些都工作正常。此外,我还在.env文件中配置了gmail smtp,在config directgory中配置了mail.php。一切都很顺利。但是我看到默认情况下忘记密码的电子邮件主题是重置密码。我想改变这一点。

我看了一些博客。我找到了一些博客。我已经在我的网站上实现了这一点。但同样的产出即将到来。

我跟踪了这些链接-

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


共有3个答案

孔飞舟
2023-03-14

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.'));

您只需将区域设置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 you’re 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通知。

商瀚
2023-03-14

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

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

希望这能有所帮助!

田易安
2023-03-14

您可以更改密码重置电子邮件主题,但这将需要一些额外的工作。首先,您需要创建自己的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

或者您可以简单地复制粘贴上述代码。正如您可能注意到的,这个通知类与默认的照明\Auth\通知\ResetPassword非常相似。实际上,您可以从默认的ResetPassword类扩展它。

唯一的区别是在这里,您添加了一个新方法调用来定义电子邮件的主题:

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

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

其次,在app\User.php文件上,您需要覆盖默认的sendPasswordResetNotification()方法,该方法由illighte\Auth\Passwords\CanResetPasswordtrait定义。现在,您应该使用自己的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));
    }
}

现在您的重置密码电子邮件主题应该更新!

希望这有帮助!

 类似资料:
  • 我有用户表,其中包含用户及其角色的信息,所以这里唯一的是“电子邮件”、“role_id”、“电话”组合在一起,所以电子邮件可以复制,但如果role_id和电话号码被复制,就不能复制,这是因为用户可以客户,这意味着role_id=1,或者他有商业账户,这意味着role_id=2,但是如果这个客户需要重置他的客户密码,或者他的商业账户密码呢?我该怎么做呢? 桌子

  • 问题内容: MyDjango应用程序当前已设置为使用本机注册包来处理用户身份验证和管理。 我创建了一些文件,用于发送密码重置令牌. 它工作正常。除了密码重设电子邮件外,它是一个丑陋的纯文字怪物。我想使其与My应用程序发送的所有其他电子邮件的外观和风格相匹配。IE:我希望它是HTML,并包含图像,样式和链接。我怎么做? 我按照这里的详细说明进行操作。但是,该代码中有一个错误,我不知道该如何处理: 有

  • 我使用laravel 5.6,并成功地将视图作为电子邮件发送。 我使用以下代码: 我唯一的问题是密码重置。我知道我可以自定义一点模板,但是如何覆盖默认的电子邮件模板并发送我自己的视图? 我尝试写我自己的ResetPassword通知: 但我只能翻译电子邮件。我想要的是根据我自己的模板发送我自己的视图。 可能吗? 谢谢你的帮助。

  • 我用的是拉威尔的授权书。我正在测试你放入电子邮件的页面,当你点击提交按钮时,密码重置电子邮件将发送到你的电子邮件。 当我手动重置密码时,会发送密码重置电子邮件。但我创建了这个测试,以确保密码重置电子邮件被发送,但它不起作用。 有1次失败: 1) 预期的[Illumb\Foundation\Auth\ResetPassword]邮件未排队。断言false为true失败。 我遵循以下代码: https

  • 问题内容: 在我的应用程序中,我使用的是Django Allauth。我没有任何用户注册表格。管理员将通过上传包含用户信息的Excel文件来注册用户。我已完成所有这些操作,并且通过自动生成密码将用户保存在用户表中。上传用户列表并将其保存在数据库中之后,我想向每个用户发送重置密码电子邮件。 在allauth重置密码中,您首先需要进入重置页面并输入您的电子邮件。然后会发送一封电子邮件,指示您更改密码

  • 每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使是。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)? 请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用Email