MENÜ

02.12.2022

Powermail: HTML in ausgehenden E-Mails

In Powermail kann man per TypoScript die Texte überschreiben, die zum Beispiel in Opt-In-Mails verwendet werden. 

Aber wenn man hier mit HTML-Code arbeiten will, ist eine weitere Anpassung notwendig.

Im konkreten Fall handelte es sich um ein Powermail-Formular mit aktiviertem Opt-In Feature.

Das bedeutet: der Besucher, der das Formular ausfüllt, erhält nach Absenden eine E-Mail mit einem Bestätigungslink. 

Die Texte, die in dieser E-Mail verwendet werden, sind bei Powermail in der Datei EXT:powermail/Resources/Private/Language/locallang.xlf gepeichert. Die deutschen Texte findet man in EXT:powermail/Resources/Private/Language/de.locallang.xlf

Der Key optin_mail_link ist zum Beispiel der Text, mit dem diese E-Mail eingeleitet wird. Standardmäßig steht dort nur: „Bitte bestätigen Sie Ihre E-Mail:“

Das geht natürlich ein wenig freundlicher ;)

Per TypoScript-Setup kann man diesen Text für jede verwendete Sprache einfach überschreiben. Dabei kann man auch HTML-Code verwenden, etwa Zeilenumbrüche.

Für Deutsch kann das so aussehen:

 

plugin.tx_powermail._LOCAL_LANG.de {   
  optin_mail_link = Guten Tag,<br/><br/>vielen Dank für Ihre Anmeldung!<br/>Bitte klicken Sie auf den nachfolgenden Bestätigungslink, um Ihre Anmeldung abzuschließen:<br/><br/>
}

 

Soweit so gut.

Das Problem: in den E-Mails, die jetzt verschickt werden, wird der HTML-Code nicht interpretiert, sondern einfach so ausgegeben, wie er in dem Text steht. Statt eines Zeilenumbruchs sieht man also nur den Code.

Deshalb ist ein weiterer Schritt notwendig. 

Powermail verwendet nämlich Fluidtemplates, um die E-Mails zu generieren. Und die müssen wir noch ein wenig anpassen.

Diese Templates findet man im Verzeichnis EXT:powermail/Resources/Private/Templates/Mail/

Und beim Beispiel mit der Opt-In-Mail ist die Datei OptinMail.html das richtige Template. Diese Datei dürfen wir natürlich nicht im Original verändern. Deshalb sollte sie in einen anderen Ordner kopiert werden, idealerweise in ein eigenes Sitepackage. (Alternativ würde auch der fileadmin-Ordner funktionieren.)

Die kopierte Datei liegt also in:

EXT:sitepackage/Resources/Private/Extensions/Powermail/Templates/Mail/OptinMail.html

Per TypoScript-Setup bringen wir Powermail bei, dieses Verzeichnis für die Powermail-Templates zu verwenden:

 

plugin.tx_powermail.view {
    templateRootPaths.100 = EXT:sitepackage/Resources/Private/Extensions/Powermail/Templates/
}

 

In dieser Datei kann man jetzt um die Ausgabe des Language-Keys optin_mail_link und optin_mail_entries den <f:format.raw>-Viewhelper "wickeln", um die HTML-Tags zu interpretieren:

 

{namespace vh=In2code\Powermail\ViewHelpers}
<f:layout name="Mail" />

    Render Powermail Optin Mail
    This Mail is send back to the user with an Optin Link that has to be clicked
    Mail will only be send, if Optin was enabled by editor

    {mail}                            Complete Mail Object
    {hash}                            Hash for optin URI
    {settings}                        TypoScript Settings

<f:section name="main">
    <f:format.raw><f:translate key="optin_mail_link" /></f:format.raw><br>

    <f:format.htmlentitiesDecode>
        <f:link.action action="optinConfirm" absolute="1" arguments="{hash: hash, mail: mail}">
            <f:uri.action action="optinConfirm" absolute="1" arguments="{hash: hash, mail: mail}" />
        </f:link.action>
    </f:format.htmlentitiesDecode>

    <br><br><hr>
    <f:format.raw><f:translate key="optin_mail_entries" /></f:format.raw><br>

    <f:format.raw>
        {powermail_all}
    </f:format.raw>

    <f:render partial="Mail/DisclaimerLink" arguments="{_all}" />
</f:section>

 

Bei Bedarf kann man auch die anderen Template noch entsprechend anpassen.