schvoy/mail-template-bundle

Mail template bundle is help to build emails easily.

Installs: 21

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

v0.7.0 2024-08-06 20:15 UTC

This package is auto-updated.

Last update: 2024-11-07 08:52:54 UTC


README

Mail template bundle helps to build and send emails from different source (Twig or Database).

Installation

Install via composer

composer require schvoy/mail-template-bundle

Register templates in twig configuration

twig:
    ...
    paths:
        '%kernel.project_dir%/vendor/schvoy/mail-template-bundle/src/Resources/views': MailTemplateBundle

Define the required environment variables

  • MAILER_SENDER_ADDRESS
  • MAILER_SENDER_NAME
  • MAILER_SIGNATORY

Usage

Twig based emails

Basically if you are using Twig based emails, the bundle will use a default email template (email_base_template). You need to define only subject and body parameters. These can be texts or translation keys.

If you use custom email template (override: email_base_template configuration) you can add more parameters to your MailType(s), and these parameters will be reachable in your template.

    {{ __mailType.subject }}
    {{ __mailType.body }}
    {{ __mailType.customParameter }}

Parameters have to have public access or a public method to reach it

Creating new twig based mail type

<?php

declare(strict_types=1);

namespace App\Mails;

use Schvoy\MailTemplateBundle\Mailer\AbstractMailType;
use Schvoy\MailTemplateBundle\Mailer\Engine\TwigBased;

class TestMailType extends AbstractMailType
{
    use TwigBased;

    protected string $subject = 'first_email.test.subject'; // Translation key

    protected string $body = 'first_email.test.body'; // Translation key
}

Sending an email

$testMail = $mailSender->getMailType(TestMailType::class);

$mailSender->send(
    $testMail,
    [
        new Recipient('test@example.com', 'Test user'),
        new Recipient('test-2@example.com'),
    ],
    [
        'parameters' => [
            '%test%' => 'Test parameter',
        ],
    ]
);

Default email (template) parameters

[
    '__greeting' => true,
    '__signature' => true,
    '__userName' => $recipient->getName() ?? false,
    '__mailType' => $mailType,
    '__translationDomain' => $this->parameterBag->get(
        sprintf('%s.%s', MailTemplateBundleExtension::ALIAS, 'translation_domain')
    ),
    '__locale' => 'en',
    'parameters' => [
        '%userName%' => $recipient->getName(),
        '%signatory%' => $this->parameterBag->get('mailer_signatory'),
    ],
]

Configuration reference

mailer_template_bundle:
    translation_domain: <string>
    email_base_template: <string>
    email_base_css_template: <string>

Not supported yet - TODO

  • Database based mail types
  • CC and BCC
  • Attachment for mails