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