Files
cms-core/Documentation/Changelog/12.1/Feature-97747-IntroduceMailerInterface.rst
T

59 lines
1.6 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _feature-97747-1654691279:
===========================================
Feature: #97747 - Introduce MailerInterface
===========================================
See :issue:`97747`
Description
===========
To be able to use your own custom mailer implementation in the TYPO3 Core, an
interface :php:`\TYPO3\CMS\Core\Mail\MailerInterface` is introduced, which extends
:php:`\Symfony\Component\Mailer\MailerInterface`
By default, :php:`\TYPO3\CMS\Core\Mail\Mailer` is registered as implementation in
:file:`Configuration/Services.yaml`.
Example
-------
.. code-block:: php
use TYPO3\CMS\Core\Mail\MailerInterface;
class MyClass
{
public function __construct(
private readonly MailerInterface $mailer
) {
}
}
Or where constructor injection is not possible:
.. code-block:: php
$mailer = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailerInterface::class);
Impact
======
This change makes it possible to create your own :php:`\My\Custom\Mailer` that implements
:php:`\TYPO3\CMS\Core\Mail\MailerInterface` which is used by TYPO3 core. Therefore, it is recommended
to use the interface :php:`\TYPO3\CMS\Core\Mail\MailerInterface`, to let dependency injection inject the
desired implementation for every :php:`\TYPO3\CMS\Core\Mail\MailerInterface`.
Add the following line in :file:`Configuration/Services.yaml`, to ensure that your custom
implementation can be injected.
.. code-block:: yaml
TYPO3\CMS\Core\Mail\MailerInterface:
alias: My\Custom\Mailer
.. index:: PHP-API, ext:core