Address set in PathHeader does not comply with addr-spec of RFC 2822 – TYPO3 Form Plugin

Beim neuen Form Plugin von TYPO3 kann es vorkommen dass man beim Absenden des Formulars den Fehler „Address set in PathHeader does not comply with addr-spec of RFC 2822“ bekommt.

Das kann an der Konfigurationseinstellung forceReturnPath liegen, der muss entweder auf 0 oder false stehen, oder eine valide E-Mail Adresse enthalten. In meinem Fall steht dieser Wert standardmäßig auf „1“ – das ist die Grundkonfiguration welche der Hoster (Mittwald) bei einer automatischen TYPO3 Installation setzt. Mittwald habe ich über den Umstand bereits informiert doch sie haben es noch nicht geändert.

localconf.php

Der Grund des Fehlers ist einfach: Im Plugin wird der returnPath gesetzt wenn er „true“ ist, und der Mailer hat mit der E-Mail Adresse „1“ natürlich ein Problem.

/typo3/sysext/form/Classes/System/Postprocessor/Mail.php

Diese Bedingung ist durch unsere Änderung in der localconf.php nicht mehr true, somit wird kein returnPath gesetzt und der Fehler ist weg.

Extbase Plugin Settings in Backend Modul auslesen

Wenn man mit Extbase ein Backend Modul erstellt, sind im Controller die Settings auf die man in einem Frontend Controller mit $this->settings direkt zugreifen kann, nicht verfügbar.

Damit das auch in einem Backend Modul funktioniert, sind 2 Sachen notwendig.

1) Die Zuweisung der Settings im Typoscript Template:

2) im Controller die Settings über den Tx_Extbase_Configuration_BackendConfigurationManager holen, beispielsweise in der initializeAction:

Damit man sich die Abfrage ob man sich im Backend befindet sparen kann (TYPO3_MODE === ‚BE‘), empfehle ich für das Backend Modul einen eigenen Controller zu machen der dann auch nur dort verwendet wird.

Extbase Plugins mit TypoScript einbinden

TYPO3 Erweiterungen im bisherigen pi_base-Stil kann man ganz einfach mit

in ein beliebiges TypoScript Objekt einfügen.

Mit neueren Erweiterungen die man mit Extbase und Fluid erstellt, gestaltet sich das (noch) etwas schwieriger. Hier muss man einen Umweg über eine userFunc mit dem Extbase Bootstrapper gehen.

Bei dem Beispiel handelt es sich um eine kleine Webshop Erweiterung die ich für ein Projekt geschrieben habe. Ziel ist es, eine Warenkorb Übersicht in der Sidebar auszugeben:

Jetzt muss nur noch im Cart Controller (wie im TS angegeben) die sidebarAction implementiert werden, in der unsere gewünschte Ausgabe generiert wird. Das erfolgt üblicherweise mit einem Fluid Template – dazu wiederum das entsprechende Template sidebar.html im Templates/Cart Verzeichnis anlegen, in der sidebarAction mit $this->view->assign() die Templatevariablen zuweisen und schließlich die fertige Ausgabe mit return $this->view->render(); zurückgeben. Das return Statement bitte nicht vergessen denn sonst passiert gar nichts 😉