59 lines
1.6 KiB
ReStructuredText
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
|