Die AdditionalConfiguration.php
wird noch vor der Instanzierung des TypoScript Frontend Controllers (TSFE) ausgelesen und ist demnach nicht geeignet, um etwas in der gobalen Konfiguration in Abhängigkeit von Frontend-Parametern zu ändern.
Um sicher zu gehen, dass du den TypoScript Frontend Controller nutzen kannst, könntest du eine Middleware in deinem Sitepackage bzw. einer eigenen Extension anlegen, die per Konfiguration erst nach der TSFE-Instanzierung greift und die Werte aus $GLOBALS['TYPO3_CONF_VARS']['MAIL']
überschreibt.
Als einfaches Beispiel könnte das dann so aussehen:
in der Datei Configuration/RequestMiddlewares.php
:
<?php
return [
'frontend' => [
'middleware-identifier' => [
'target' => \VendorName\Sitepackage\Middleware\DynamicSmtpConfiguration::class,
'after' => [
'typo3/cms-frontend/tsfe',
],
],
],
];
in der Datei Classes/Middleware/DynamicSmtpConfiguration.php
:
<?php
namespace VendorName\Sitepackage\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class DynamicSmtpConfiguration implements MiddlewareInterface
{
/**
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
* @return ResponseInterface
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$frontendController = $request->getAttribute('frontend.controller');
if ($frontendController->id === 1) {
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_server'] = 'mail.example.com'; // Neue SMTP-Adresse für das Formular
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_encrypt'] = true; // Verschlüsselungseinstellung
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_username'] = 'username'; // Benutzername für die SMTP-Authentifizierung
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_password'] = 'password'; // Passwort für die SMTP-Authentifizierung
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'email@example.com'; // Absenderadresse für das Formular
}
return $handler->handle($request);
}
}
Neben reinen Debug-Ausgaben des Arrays $GLOBALS['TYPO3_CONF_VARS']['MAIL']
habe ich diesen Code selbst noch nicht voll auf Funktionalität getestet. Ich würde mich deshalb freuen, wenn du kurz Rückmeldung geben würdest, ob der Code wirklich hinsichtlich der dynamischen SMTP-Einstellungen funktioniert.