Каков наилучший вариант для отправки писем в laravel с другим шаблоном электронной почты

В настоящее время мы используем прослушиватель событий laravel для отправки электронных писем для laravel. По сути, это вариант бронирования слотов, поэтому иногда нам приходится отправлять электронные письма отправителю, а иногда отправлять получателю, а иногда — другим партнерам слотов. В текущем случае мы используем один Event Listner для отправки разных электронных писем для различных действий, которые пользователи выполняют в слоте, таких как отмена собрания, добавление еще одного участника и т. Д. Но, как правило, в этом случае шаблоны электронной почты будут отличаться только от дунамических переменных, которые мы нужно изменить.

Но в новом случае мы должны отправить 4 или 5 писем разным пользователям с разными шаблонами писем и разным содержимым за одно действие. Если мы планируем это в едином списке событий, как мы можем справиться с этим?

     $event_id=$event->user['XXXXX'];//event id

$slot_type=$event->user['XXXXX'];//slot type
$notification_type=$event->user['XXXXX']; //slot type
$scheduler_slot_info_ids=$event->user['XXXX'];

$data = $schedulerHelper->getOnetoOneNotificationContents($scheduler_slot_info_ids,$event_id,$slot_type);


$action_trigger_by=$event->user['XXXXX'];
//$data['subject']  =  'CARVRE SEVEN|MEETING CONFIRMED';
$data['subject']  =  $event->user['XXXX'];
// $data['template'] =  'emailtemplates.scheduler.oneToOneMeetingConfirmed';
$data['template'] =  $event->user['XXXX'];

$invitee_id=Crypt::encryptString($data['XXXX']);
$crypt_event_id=Crypt::encryptString($event_id);
$data['link']           =  url('XXXX');
$data['email_admin']    =  env('FROM_EMAIL');
$data['mail_from_name'] =  env('MAIL_FROM_NAME');
// $data['receiver_email'] =  'XXXXXXX';//$invitee['email'];

//Calling mail helper function
MailHelper::sendMail($data);

0

Решение

Создайте либо таблицу, либо жестко запрограммированный массив с шаблонами для визуализации, затем попросите эти средства визуализации отобразить шаблон ветки / блейд / php на основе переменных, которые вы предоставляете, и всех других переменных, которые вам понадобятся для подачи в почтовую программу.

Затем просто переберите всех получающих кандидатов и отправьте соответствующие электронные письма с правильным средством визуализации.

Вам нужно будет создать несколько служебных классов и все для этого, но как только вы установите его и разберетесь, им будет легко управлять и расширять его с помощью большего количества шаблонов.

Просто грубый набросок того, что я бы использовал

protected $renderers = [
'templateA' => '\Foo\Bar\BazEmailRender',
'templateB' => '\Foo\Bar\BbyEmailRender',
'templateC' => '\Foo\Bar\BcxEmailRender',
];

public function getTemplate($name)
{
if(array_key_exists($name, $this->renderers)) {
$clazz = $this->renderers[$name];
return new $clazz();
}
return null;
}

public function handleEmails($list, $action)
{
$mailer = $this->getMailer();
foreach($list as $receiver) {
if(($template = $this->getTemplate($receiver->getFormat()))) {
$template->setVars([
'action' => $action,
'action_name' => $action->getName(),
'action_time' => $action->created_at,
// etc...
]);

$mailer->send($receiver->email, $template->getSubject(), $template->getEmailBody());
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]