dachcom-digital/emailizr

Pimcore Emailizr - create html emails the right way!


Keywords
email, pimcore, inky, inline style, email-template, zurb-email
License
CNRI-Python-GPL-Compatible

Documentation

Pimcore Emailizr

Join the chat at https://gitter.im/pimcore/pimcore Software License Latest Release Tests PhpStan

Requirements

  • Pimcore: ^11.0
  • PHP: >= 8.1

Release Plan

Release Supported Pimcore Versions Supported Symfony Versions Release Date Maintained Branch
3.x 11.0 ^6.2 30.08.2023 Feature Branch master
2.x 10.1 - 10.6 ^5.4 21.09.2021 Maintained 2.x
1.x 6.0 - 6.9 3.4, ^4.4 06.12.2017 No 1.x

Installation

"require" : {
    "dachcom-digital/emailizr" : "~3.0.0",
}

Add Bundle to bundles.php:

return [
    EmailizrBundle\EmailizrBundle::class => ['all' => true],
];
  • Create valid email markup with inky and inline styles.
  • Respect editables in pimcore edit mode.

Usage

Just extend the emailizr layout:

{% extends '@Emailizr/layout.html.twig' %}

This will include a markup like this. You may want to change it:

{% apply spaceless %}
{{ emailizr_style_collector.add('@EmailizrBundle/public/css/foundation-for-emails/foundation.min.css') }}
{% emailizr_inline_style %}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width"/>
    {% block headStyles %}
        <style type="text/css">
            {% autoescape false %}
                {{ emailizr_inline_style(emailizr_style_collector) }}
            {% endautoescape %}
        </style>
    {% endblock %}
</head>
{% apply inky_to_html %}
    <body>
        {% block body %}
            <table class="body">
                <tr>
                    <td class="center" align="center" valign="top">
                        <center>
                            {% block content %}
                            {% endblock %}
                        </center>
                    </td>
                </tr>
            </table>
            <!-- prevent Gmail on iOS font size manipulation -->
            <div style="display:none; white-space:nowrap; font:15px courier; line-height:0;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
        {% endblock %}
        </body>
{% endapply %}
</html>
{% end_emailizr_inline_style %}
{% endapply %}

Service

If you need to parse values in a custom context, you may use the ContentService.

<?php

use EmailizrBundle\Service\ContentService;

class YourClass
{
    protected ContentService $contentService;

    public function __construct(ContentService $contentService)
    {
        $this->contentService = $contentService;
    }

    public function parse($content)
    {
        $cssFile = PIMCORE_WEB_ROOT . '/static/css/email.css';

        return $this->contentService->checkContent($content, $cssFile, FALSE, TRUE, TRUE);
    }
}

Further Information

Upgrade Info

Before updating, please check our upgrade notes!