Mit folgendem TypoScript lässt sich in Powermail 2.x eine dynamische Anrede des Benutzers in E-Mails und Bestätigungsseite bewerkstelligen.
TypoScript:
lib.anrede = CASE lib.anrede { key.field = 0 default = TEXT default.value = Sehr geehrte Damen und Herren, Herr = TEXT # Die "7" ist die ID des Powermail-Felds {name} Herr.data = GP:tx_powermail_pi1|field|7 Herr.noTrimWrap = |Sehr geehrter Herr |,| Frau = TEXT Frau.data = GP:tx_powermail_pi1|field|7 Frau.noTrimWrap = |Sehr geehrte Frau |, | # Englische Übersetzung: Mr = TEXT Mr.data = GP:tx_powermail_pi1|field|7 Mr.noTrimWrap = |Dear Mr |, | Mrs = TEXT Mrs.data = GP:tx_powermail_pi1|field|7 Mrs.noTrimWrap = |Dear Mrs |, | Ms = TEXT Ms.data = GP:tx_powermail_pi1|field|7 Ms.noTrimWrap = |Dear Ms |, | }
ViewHelper für Powermail-Plugin:
{f:cObject(typoscriptObjectPath:'lib.anrede',data:'{anrede}')}
Quelle: typo3.net - Forum
Ab Powermail 2.1.x werden Powermail-Felder nicht mehr über die UID, sondern den Markernamen angesprochen. Dementsprechend müssen die Zeilen im TypoScript etwas angepasst werden:
# Powermail-Feld {name} Herr.data = GP:tx_powermail_pi1|field|name
Mit stdWrap.replacement
wird hier zudem das Problem mit Leerzeichen im Namen der Auswahl behoben:
plugin.tx_powermail.settings.setup.receiver.overwrite.email = CASE plugin.tx_powermail.settings.setup.receiver.overwrite.email { key.data = GP:tx_powermail_pi1|field|pleaseselectthereceiver // Leerzeichen durch Bindestriche ersetzen: key.stdWrap.replacement { 10 { // 32 = ASCII-Code für ein Leerzeichen search.char = 32 // 45 = ASCII-Code für einen Bindestrich replace.char = 45 } } default = TEXT default.value = info@example.org General-request = TEXT General-request.value = info@example.org Application = TEXT Application.value = application@example.org // Deutsche Übersetzung: Allgemeine-Anfrage = TEXT Allgemeine-Anfrage.value = info@example.org Bewerbung = TEXT Bewerbung.value = application@example.org }
Wenn über ein Dropdown-Menü mehr als eine Empfänger-E-Mail angegeben werden muss, kann dies mithilfe von fe_users geschehen. Für jeden Empfänger wird ein Webseiten-Benutzer angelegt, die jeweiligen UIDs werden kommasepariert nach dem Pipe-Symbol |
ins Textfeld des Dropdown-Menüs eingetragen.
Beispiel eines Menüs, das den Empfänger je nach gewähltem Land auswählt:
Belgien | 1,4 Deutschland | 2 Österreich | 2,3
Per Typoscript und SQL-Befehl können die E-Mail-Adressen der gewählten fe_users ausgelesen werden:
plugin.tx_powermail_pi1.email.recipient_mail { email_query = TEXT email_query.value = SELECT email FROM fe_users WHERE uid IN(###UID14###) }
Zu beachten ist, dass der Text vor dem Pipe-Symbol nicht mit dem Marker in der E-Mail ausgegeben werden kann! Es erscheint nur der Wert dahinter.
Ohne Korrektur versendet Powermail seine E-Mails an den Absender des Kontaktformulars mit dem Namen „Powermail“. Um dies zu ändern, genügt dieses Typoscript:
plugin.tx_powermail_pi1.email.sender_mail.sender.name.value = Name
Neben dem Marker ###POWERMAIL_ALL###
können die Formularinhalte auch einzeln abgerufen werden, z.B. für die gesendeten E-Mails. Hierfür hat jedes Formularfeld seine UID. Auch die Labels können mit ###LABEL_UID###
ausgelesen werden.
Ihre Nachricht an uns: ###UID1### ###UID2### ###UID3### ###UID4### ###LABEL_UID5###: ###UID5### Nachricht: ###UID6###
wird so zu:
Ihre Nachricht an uns:
Herr Michael Mustermann
mail@example.com
Auswahlfeld: Wahl A
Nachricht: Lorem ipsum …
Setup-Konfigurationen für Powermail 2.0.x:
# JavaScripts entfernen: page.includeJSFooterlibs { # jQuery bereits gesetzt: powermailJQuery > # jQuery UI Datepicker wird nicht benötigt powermailJQueryUi > powermailJQueryUiDatepicker > } # CSS entfernen: page.includeCSS { powermailJQueryUiTheme > powermailJQueryUiDatepicker > } # Powermail nur für entsprechende Seite: [PIDinRootline = 17] page.includeCSS.powermail = fileadmin/Resources/Public/Css/powermail-responsive.css [else] page { includeJSFooterlibs { powermailJQueryFormValidationLanguage > powermailJQueryFormValidation > powermailJQueryTabs > } includeJSFooter { powermailForm > } } [global]
Ab Powermail 2.1.x genügt es, folgende Angaben in Constants zu setzen:
plugin.tx_powermail.settings { javascript.addJQueryFromGoogle = 0 javascript.addAdditionalJavaScript = 0 }
# Spamshield aktivieren: plugin.tx_powermail.settings.setup.spamshield._enable = 1 # Fallback, um einzelne Templates zu verändern: plugin.tx_powermail.view { templateRootPath > templateRootPaths { 10 = EXT:powermail/Resources/Private/Templates/ 20 = fileadmin/Resources/Private/Templates/powermail/ } }