Я пытаюсь изменить поле subject
по умолчанию в электронном письме с подтверждением, которое поставляется с Laravel 5.7. Как и где его поменять? Я искал повсюду и в Интернете. Потому что это новенькое, я не могу найти ответа.
Изменение поля «Тема» по умолчанию для проверочных писем в Laravel 5.7
Ответы (3)
Вам не нужно ничего кодировать. В уведомлении есть все строки, обернутые в класс 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.'));
}
Здесь вы можете увидеть все струны.
Создайте файл en.json, если у вас его еще нет в папке resources / lang.
добавить исходную строку и замену. например
{
"Verify Email Address": "My preferred subject",
"Please click the button below to verify your email address.":"Another translation"
}
Чтобы перевести на другой язык, измените локаль в config / app.php и создайте файл перевода с locale.json.
Это черта 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
, поскольку он содержит уведомление и может использоваться в качестве примера для вашего настраиваемого уведомления о проверке.
In User.php
public function sendEmailVerificationNotification()
{
$this->notify(new MyNotification);
}
Тогда беги
php artisan make:notification MyNotification
И в своем уведомлении вы можете просто расширить до Illuminate\Auth\Notifications\VerifyEmail
Затем вы можете переопределить функцию уведомления для почты ... Еще не пробовали, но это должно сработать.
Можете ли вы разместить свою функцию по почте? Я использую:
\Mail::to($user)->subject('Your Subject')->bcc([$reports,$me])->send(new Declined($user));
А именно: отправить письмо пользователю $, установить тему, скрыть копию, затем отправить письмо, передавая пользователю. Это также для почты с уценкой. Вы используете оператор ->
, чтобы добавить все дополнительные функции к почте, поэтому вы можете добавить в BCC (как я), а также CC и т. Д.