---
title: "Breaking: #108097 - MailMessage->send() removed"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-108097-1763046431"
source: "Changelog/14.0/Breaking-108097-MailMessage-sendRemoved.rst"
typo3-version: "14.0"
typo3-major: 14
type: "breaking"
issue: 108097
forge: "https://forge.typo3.org/issues/108097"
tags: ["PHP-API", "NotScanned", "ext:core"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Breaking: #108097 - MailMessage->send() removed {#breaking-108097-1763046431}

See [forge#108097](https://forge.typo3.org/issues/108097)

## Description {#description}

Class `\TYPO3\CMS\Core\Mail\MailMessage` is a data object that
should not contain service methods like `send()`. The following methods
have been removed from this class:

-   `send()`
-   `isSent()`

## Impact {#impact}

Using the removed methods on instances of this class will raise fatal PHP
errors.

## Affected installations {#affected-installations}

Instances that create `MailMessage` objects
and call `send()` or `isSent()` are affected. The extension scanner
is not configured to find affected code since the method names are too generic.

## Migration {#migration}

The service (usually a controller class) that sends emails should be
reconfigured to get an instance of `MailerInterface`
injected and should use that service to call `send()`.

Example before:

```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:

```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);
    }
}
```
