Files
cms-core/Documentation/Changelog/14.0/Breaking-108097-MailMessage-sendRemoved.rst
T

79 lines
1.9 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _breaking-108097-1763046431:
===============================================
Breaking: #108097 - MailMessage->send() removed
===============================================
See :issue:`108097`
Description
===========
Class :php:`\TYPO3\CMS\Core\Mail\MailMessage` is a data object that
should not contain service methods like :php:`send()`. The following methods
have been removed from this class:
* :php:`send()`
* :php:`isSent()`
Impact
======
Using the removed methods on instances of this class will raise fatal PHP
errors.
Affected installations
======================
Instances that create :php-short:`\TYPO3\CMS\Core\Mail\MailMessage` objects
and call :php:`send()` or :php:`isSent()` are affected. The extension scanner
is not configured to find affected code since the method names are too generic.
Migration
=========
The service (usually a controller class) that sends emails should be
reconfigured to get an instance of :php-short:`\TYPO3\CMS\Core\Mail\MailerInterface`
injected and should use that service to call :php:`send()`.
Example before:
.. code-block:: php
use TYPO3\CMS\Core\Mail\MailMessage;
final readonly class MyController
{
public function sendMail()
{
$email = new MailMessage();
$email->subject('Some subject');
$email->send();
}
}
Example after:
.. code-block:: php
use TYPO3\CMS\Core\Mail\MailMessage;
use TYPO3\CMS\Core\Mail\MailerInterface;
final readonly class MyController
{
public function __construct(
private MailerInterface $mailer
) {}
public function sendMail()
{
$email = new MailMessage();
$email->subject('Some subject');
$this->mailer->send($email);
}
}
.. index:: PHP-API, NotScanned, ext:core