BeforeMailerSentMessageEvent

New in version 12.0

The PSR-14 event \TYPO3\CMS\Core\Mail\Event\BeforeMailerSentMessageEvent is dispatched before the message is sent by the mailer and can be used to manipulate the \Symfony\Component\Mime\RawMessage and the \Symfony\Component\Mailer\Envelope. Usually a \Symfony\Component\Mime\Email or \TYPO3\CMS\Core\Mail\FluidEmail instance is given as RawMessage. Additionally the mailer instance is given, which depends on the implementation - usually \TYPO3\CMS\Core\Mail\Mailer . It contains the \Symfony\Component\Mailer\Transport object, which can be retrieved using the getTransport() method.

Example

Registration of the event listener in the extension's Services.yaml:

EXT:my_extension/Configuration/Services.yaml
services:
  # Place here the default dependency injection configuration

  MyVendor\MyExtension\Mail\EventListener\MyEventListener:
    tags:
      - name: event.listener
        identifier: 'my-extension/modify-message'
Copied!

Read how to configure dependency injection in extensions.

The corresponding event listener class:

EXT:my_extension/Classes/Mail/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Mail\EventListener;

use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email;
use TYPO3\CMS\Core\Mail\Event\BeforeMailerSentMessageEvent;

final class MyEventListener
{
    public function __invoke(BeforeMailerSentMessageEvent $event): void
    {
        $message = $event->getMessage();

        // If $message is an Email implementation, add an additional recipient
        if ($message instanceof Email) {
            $message->addCc(new Address('cc_recipient@example.org'));
        }
    }
}
Copied!

API

class BeforeMailerSentMessageEvent
Fully qualified name
\TYPO3\CMS\Core\Mail\Event\BeforeMailerSentMessageEvent

This event is fired before the Mailer has sent a message and allows listeners to manipulate the RawMessage and the Envelope.

Note: Usually TYPO3CMSCoreMailMailer is given to the event. This implementation allows to retrieve the TransportInterface using the getTransport() method.

getMessage ( )
Returns
\Symfony\Component\Mime\RawMessage
setMessage ( \Symfony\Component\Mime\RawMessage $message)
param $message

the message

getEnvelope ( )
Returns
?\Symfony\Component\Mailer\Envelope
setEnvelope ( ?\Symfony\Component\Mailer\Envelope $envelope = NULL)
param $envelope

the envelope, default: NULL

getMailer ( )
Returns
\Symfony\Component\Mailer\MailerInterface