Get Mystery Box with random crypto!

Swiftmailer умер, да здравствует Symfony Mailer! Это перевод | Пятиминутка PHP

Swiftmailer умер, да здравствует Symfony Mailer!

Это перевод статьи из блога Symfony: https://symfony.com/blog/the-end-of-swiftmailer

Начиная с Symfony 4.3 (май 2019) у нас появился новый компонент Symfony Mailer. С каждым релизом он наращивал функцинальность, добавляя больше сторонних поставщиков и некоторые недостающие функции, которые уже были доступны в старом Swiftmailer, например, поддержку DKIM и электронные подписи.

Начиная с версии Symfony 5.3 можно сказать, что все функции Swiftmailer теперь доступны и в Symfony Mailer.

Пришло время официально прекратить поддержку Swiftmailer в пользу Symfony Mailer. Дату окончания поддержки Swiftmailer - конец ноября 2021 года, т.е. одновременно с выпуском Symfony 5.4 LTS и 6.0.

На самом деле новый компонент Symfony Mailer мог бы выйти под названием Swiftmailer 7. Давайте немного погрузимся в то, как я решил создать Symfony Mailer вместо выпуска Swiftmailer 7. Текущая кодовая база для Swiftmailer была основана Swiftmailer 4.0, который вышел примерно во времена Symfony 1.2 (декабрь 2008)!

В течение многих лет я пытался поэтапно модернизировать Swiftmailer, вводя пространства имен, переходя к автозагрузчику Composer, удаляя специальную (и тяжелую) «последовательность загрузки», пытаясь перейти на DI и диспетчер событий Symfony. Но все мои усилия всегда заканчивались тупиком. Слишком много концептуальных проблем. У Swiftmailer странное и сложное наследование классов, а экземпляры сообщений не являются объектами данных, что затрудняет сериализацию. Ему также не хватает некоторых современных функций, таких как поддержка шаблонизатора Twig и системы подключения сторонних поставщиков для отправки почты. Обе функции можно было бы добавить в текущую кодовую базу, но это был бы хаос. Другая проблема заключается в том, как Swiftmailer поддерживает асинхронную отправку – это плохо работает и механизм не гибкий. Я могу продолжать и продолжать, но вы поняли суть.

Итак, в какой-то момент я решил начать все сначала. Вместо того, чтобы пытаться модернизировать код поэтапно, я скопировал код и начал сначала работать над изоляцией компонента Symfony Mime. Затем я максимально реорганизовал остальную кодовую базу, в результате появился Symfony Mailer.

Symfony Mailer имеет довольно много общего кода со Swiftmailer, но не имеет его особенностей и архитектурных проблем.
Переход с Swiftmailer на Symfony Mailer – это относительно простая задача, поскольку концепции в этих двух библиотеках одинаковы.