Создайте либо таблицу, либо жестко запрограммированный массив с шаблонами для визуализации, затем пусть эти средства визуализации отобразят шаблон ветки / лезвия / 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());
}
}
}