BeforeEmailFinisherInitializedEvent 

New in version 14.0

The PSR-14 event BeforeEmailFinisherInitializedEvent has been introduced to provide developers with control over email configuration without needing to extend or override the EmailFinisher class.

A PSR-14 event \TYPO3\CMS\Form\Event\BeforeEmailFinisherInitializedEvent is dispatched before the \TYPO3\CMS\Form\Domain\Finishers\EmailFinisher is initialized and allows listeners to modify the finisher options.

This enables developers to customize email behavior programmatically, such as:

  • Setting alternative recipients based on frontend user permissions
  • Modifying the email subject or content dynamically
  • Replacing recipients with developer email addresses in test environments
  • Adding or removing CC/BCC recipients conditionally
  • Customizing reply-to addresses

Example 

The corresponding event listener class:

EXT:my_package/Classes/Form/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace Vendor\MyPackage\Form\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Form\Event\BeforeEmailFinisherInitializedEvent;

final readonly class BeforeEmailFinisherInitializedEventListener
{
    #[AsEventListener(
        identifier: 'my-package/form/modify-email-finisher-options',
    )]
    public function __invoke(BeforeEmailFinisherInitializedEvent $event): void
    {
        $options = $event->getOptions();
        $context = $event->getFinisherContext();

        // Overwrite recipients based on FormContext
        if ($context->getFormRuntime()->getFormDefinition()->getIdentifier() === 'my-form-123') {
            $options['recipients'] = ['user@example.org' => 'John Doe'];
        }

        // Modify subject dynamically
        $options['subject'] = 'Custom subject: ' . ($options['subject'] ?? '');

        // Clear CC and BCC recipients
        $options['replyToRecipients'] = [];
        $options['blindCarbonCopyRecipients'] = [];

        $event->setOptions($options);
    }
}
Copied!

API 

class BeforeEmailFinisherInitializedEvent
Fully qualified name
\TYPO3\CMS\Form\Event\BeforeEmailFinisherInitializedEvent

Event fired before the email finisher is initialized

getFinisherContext ( )
Return description

The FinisherContext containing form runtime and request information

Returns
FinisherContext
getOptions ( )
Returns
array
setOptions ( )

Allows modified options array to be set