Я сохраняю каждое электронное письмо, которое я отправляю объекту, в базу данных, создавая функцию storeEmail
и вставляя класс MailMessage
в модель EmailMessage
. Все работает нормально, и главная цель - отобразить сообщение в точности так, как оно было, когда получатель получил его, и извлечь все сообщения, которые я отправил как User
, на страницу. Чтобы было намного проще получить рендер каждого указанного c сообщения в foreach l oop, я думаю, что лучше выбрать его из модели.
Это мой класс уведомлений:
class SimpleEmail extends Notification
{
use Queueable;
private $link;
private $user;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($link)
{
$this->link = $link;
$this->user = Auth::user();
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$mail = (new MailMessage)
->from($this->user->email, $this->user->name)
->subject('My Dummy Subject')
->greeting('To: '.$notifiable->email)
->action('Action Button', url($this->link))
->line('Thank you for reading my message')
->salutation('Friendly, '.$this->user->name);
$this->storeEmail($mail,$notifiable);
return $mail;
}
public function storeEmail($mail,$notifiable){
$email = new EmailMessage;
$email->sender_type = 'App\User';
$email->sender_id = $this->user->id;
$email->mail = $mail;
$email->save();
$notifiable->email_messages()->save($email);
}
}
Note:
- Я использую
Illuminate\Notifications\Messages\MailMessage
- Мой класс расширяется
Illuminate\Notifications\Notification
- Я сохраняю (новое MailMessage) в $ email-> mail = $ mail;
Я попытался dd($email->mail);
, и я получил это:
^ array:20 [▼
"view" => null
"viewData" => []
"markdown" => "notifications::email"
"theme" => null
"from" => array:2 [▶]
"replyTo" => []
"cc" => []
"bcc" => []
"attachments" => []
"rawAttachments" => []
"priority" => null
"callbacks" => []
"level" => "info"
"subject" => "My Dummy Subject"
"greeting" => "To: Dohn John"
"salutation" => "Friendly, Nikolas Diakosavvas"
"introLines" => array:2 [▶]
"outroLines" => array:1 [▶]
"actionText" => "Action Button"
"actionUrl" => "http://my-example-url.com ▶"
Как я могу отобразить почтовое уведомление, как оно было, когда я отправил его? Какое оптимальное решение для этого? Заранее спасибо
РЕДАКТИРОВАНИЕ
Удалось обработать MailMessage с помощью этого кода работает :
$email = EmailMessage::first();
return (new \App\Notifications\SimpleEmail('my-link', $email->recipient->assignto))->toMail($email->recipient);
Но это не совсем то, что я хотел , потому что каждый раз, когда мне нужно найти:
- Какой класс уведомлений используется в каждом письме, чтобы я мог его отобразить.
- Переменные для каждый класс уведомлений.