26/03
2018
# config/packages/creonit_mailing.yaml creonit_mailing: from: 'noreply@creonit.ru' base_template: 'mail/base.html.twig' templates_path: '%kernel.project_dir%/config/mailing_templates' globals: parameter: 'value'
# config/mailing_templates/template.yaml example: title: 'Example Template' from: email: 'noreply@creonit.ru' name: 'Creonit' subject: 'Welcome' template: '{{ message }}'
custom template loader
, (*1)
use Creonit\MailingBundle\Templating\Loader\AbstractTemplateLoader; use Creonit\MailingBundle\Templating\MailingTemplate; use Creonit\MailingBundle\Templating\TemplateCollection; class MyTemplateLoader extends AbstractTemplateLoader { public function load(TemplateCollection $templateCollection) { $template = new MailingTemplate('my_template'); $template ->setTitle('Example custom loader') ->setSubject('Example custom loader') ->setTemplate('Custom loader, (*2)
'); $templateCollection->add($template); } }
custom message builder
, (*3)
use Creonit\MailingBundle\Message\MailingMessage; use Creonit\MailingBundle\Message\MessageBuilderInterface; use Creonit\MailingBundle\Templating\MailingTemplate; class MyMessageBuilder implements MessageBuilderInterface { public function build(MailingTemplate $template, array $context): MailingMessage { $message = new MailingMessage(); $message->cc('major@gmail.com'); return $message; } public function supports(MailingTemplate $template, array $context): bool { return $template->getKey() === 'my_template'; } }
send message
, (*4)
use Creonit\MailingBundle\Mailing; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Mailer\MailerInterface; class MailingController extends AbstractController { public function sendEmail(Mailing $mailing, MailerInterface $mailer) { $email = 'example@exmple.com'; $template = 'my_template'; $message = $mailing->buildMessage($template, ['message' => 'Hello']); $message->to($email); $mailer->send($message); } }