Le composant MIME de Symfony

Deux nouveaux composants pour la version 4.3 de Symfony : MIME et Mailer

Pour la 10ème année de Symfony Live Fabien Potencier (@fabpot) | Twitter nous a présenté deux composants Mime & Mailer. Deux nouveaux composants pour la version 4.3 de Symfony ! Pull Request #30741 - Add the Mailer component

Composant MIME

Mr. Wikipedia dit:

Multipurpose Internet Mail Extensions (MIME) ou Extensions multifonctions du courrier Internet est un standard internet qui étend le format de données des courriels pour supporter des textes en différents codage des caractères autres que l’ASCII, des contenus non textuels, des contenus multiples, et des informations d’en-tête en d’autres codages que l’ASCII. Les courriels étant généralement envoyés via le protocole SMTP au format MIME, ces courriels sont souvent appelés courriels SMTP/MIME.

Ce nouveau nouveau composant à pour but de nous permettre de manipuler facilement les différents types de contenus, de MIME types.

Code source: GitHub - symfony/mime: The MIME component allows manipulating MIME types.

Création d’un email

La création d’emails est simple et intuitive ! Je vous laisserai le plaisir de lire la documentation ou regarder le code mais voici un petit exemple:

use Symfony\Component\Mime\Email;

$email = (new Email())
    ->from('fabien@symfony.com')
    ->to('fabien@sensiolabs.com')
    ->subject('Some subject')
    ->text('Some text message')
    ->html('<b>Some HTML message</b>')
    ->attach('doc.txt');

Et c’est encore plus beau avec plus d’objets

use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\NamedAddress;

$email = (new Email())
        ->from('fabien@symfony.com')
        ->to(new Address('fabien@sensiolabs.com'))
        ->addTo(new NamedAddress('fabien@sensiolabs.com', 'Fabien'))
        ->addCc('hello@world.com', 'bye@world.com')
        ->addCc(...['hello@world.com', 'bye@world.com'])
        ->subject('Some subject')
        ->text('Some text message');

Quelle est la différence avec Swiftmailer?

Une serialisation moins complexe , plus légère et une gestion dynamique des headers.

Il est aussi possible d’utiliser des classes plus bas niveau pour composer son email comme on le souhaite, attacher et même embed des fichiers très (trop?) simplement

Un peu design dans ce monde de back

Je ne vais pas vous copier/coller un template tout fait mais sachez que l’intégration de template est native avec Twig

{% do email.priority(5) %}
{% do email.attach('@docs/doc.pdf') %}

<p>
  Welcome <b>{{ email.toName }}</b>
</p>

<p>
  <img src="{{ email.image('@images/photo.jpg') }}">
</p>

Quelques extensions utiles:

Twig CSS Inliner Extension

Twig Markdown Extension

Twig Inky Extension pour créer des templates responsive like a boss

Composant Mailer

L’envoie de mail peut se faire en SMTP, HTTP ou API. On nous simplifie aussi la vie en intégrant directement les providers les plus populaires tels que Amazon SES, Google Mail, Mandrill, Mailgun, Postmark ou encore Sendgrid. Tout a été penser pour passer d’un provider à l’autre sans problème en utilisant les mêmes events, interfaces et serialisation.

Il sera aussi possible d’envoyer ses mails de manière asynchrone via Messenger !

Un petit exemple:

# asynchrone
framework:
	messenger:
		routing:
			'Symfony\Component\Mailer\EnvelopedMessage': amqp

# synchrone
framework:
	messenger:
		routing:
			# 'Symfony\Component\Mailer\EnvelopedMessage': amqp

Loïc J.

#symfony #symfony/mailer

Ajouter un commentaire