The PSR-14 event \TYPO3\CMS\Linkvalidator\Event\ModifyValidatorTaskEmailEvent can be used to manipulate the \TYPO3\CMS\Linkvalidator\Result\LinkAnalyzerResult, which contains all information from the linkvalidator API. Also the FluidEmail object can be adjusted there. This allows to pass additional information to the view by using $fluidEmail->assign() or dynamically adding mail information such as the receivers list. The added values in the event take precedence over the modTSconfig configuration. The event contains the full modTSconfig to access further information about the actual configuration of the task when assigning new values to FluidEmail.


As it is possible to set the recipient addresses dynamically using this event, the email field in the task configuration can remain empty but will be added, if defined, on top of already defined recipients from the event. All other values such as subject, from or replyTo will only be set according to modTSconfig, if not already defined through the event.




namespace MyVendor\MyExtension\Linkvalidator\EventListener;

use Symfony\Component\Mime\Address;
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Linkvalidator\Event\ModifyValidatorTaskEmailEvent;

    identifier: 'my-extension/modify-validation-task-email'
final class MyEventListener
    public function __invoke(ModifyValidatorTaskEmailEvent $event): void
        $linkAnalyzerResult = $event->getLinkAnalyzerResult();
        $fluidEmail = $event->getFluidEmail();
        $modTSconfig = $event->getModTSconfig();

        if ($modTSconfig['mail.']['fromname'] === 'John Smith') {
            $fluidEmail->assign('myAdditionalVariable', 'foobar');

            $linkAnalyzerResult->getTotalBrokenLinksCount() . ' new broken links'

        $fluidEmail->to(new Address(''));

New in version 13.0: The PHP attribute \TYPO3\CMS\Core\Attribute\AsEventListener has been introduced to tag a PHP class as an event listener. Alternatively, or if you need to be compatible with older TYPO3 versions, you can also register an event listener via the Configuration/Services.yaml file. Switch to an older version of this page for an example or have a look at the section Implementing an event listener in your extension.

The \TYPO3\CMS\Linkvalidator\Result\LinkAnalyzerResult contains the following information by default:


Amount of broken links from the last run, separated by type (for example: all, internal)


Amount of broken links from this run, separated by type (for example: all, internal)


List of broken links with the raw database row


Whether the broken links count changed

The brokenLinks property gets further processed internally to provide additional information for the email. Following additional information is provided by default:


The full record, the broken link was found in (for example: pages or tt_content)


Value of the full_record title field


The title of the record type (for example: "Page" or "Page Content")


The language code of the broken link


The real page ID of the record the broken link was found in


The whole page row of records parent page

More can be added using this PSR-14 event.

Additionally to the already existing content, the email now includes a list of all broken links fetched according to the task configuration. This list consists of following columns:


The record_uid and record_title


The language_code and language ID


The real_pid and page_record.title of the parent page

Record Type

The record_type

Link Target

The target

Link Type

Type of the broken link (either internal, external or file)


class TYPO3\CMS\Linkvalidator\Event\ModifyValidatorTaskEmailEvent

Allows to process and modify the LinkAnalyzer result and FluidEmail object

Return type


Return type


Return type