在Laravel 5.7中更改验证电子邮件的默认“主题”字段

时间:2018-09-19 14:19:10

标签: laravel laravel-mail laravel-5.7

我正在尝试更改Laravel 5.7随附的验证电子邮件中的默认subject字段。如何以及在哪里更改?我自己和在网上搜索了整个地方。因为它是全新的,所以找不到答案。你能帮我吗?谢谢!

3 个答案:

答案 0 :(得分:12)

这是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函数的通知...尚未尝试过,但这应该可以解决。

答案 1 :(得分:7)

您不需要编写任何代码。该通知将所有字符串包装在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创建翻译文件

答案 2 :(得分:0)

您可以将函数发布到邮寄的位置吗? 我使用:

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

这是:向$ user发送邮件,设置主题,盲目复制,然后在传递用户的同时发送邮件。这也是降价邮件。您可以使用->运算符来添加邮件的所有其他功能,这样就可以添加密件抄送(如我已经完成的操作)以及CC等。