YForm Bestätigungsmail an Formulareinsender
Quell-ID: GitHub Discussion #12
Use Case
Bei einem YForm-Formular soll der Benutzer, der das Formular absendet, eine Bestätigungsmail an seine eingegebene E-Mail-Adresse erhalten.
Verwendete AddOns
- YForm
Zielbeschreibung
Die tpl2email-Action soll so konfiguriert werden, dass die E-Mail nicht an eine feste Adresse, sondern an die im Formular eingegebene E-Mail-Adresse gesendet wird.
Lösung
Pipe-Schreibweise
action|tpl2email|emailtemplate|namedesemailformularfeldes
PHP-Schreibweise
$yform->setActionField('tpl2email', ['emailtemplate', 'namedesemailformularfeldes']);
Vollständiges Beispiel
Formular-Definition
<?php
$yform = new rex_yform();
$yform->setObjectparams('form_action', rex_getUrl());
// Formularfelder
$yform->setValueField('text', ['name', 'Name', '', 'no_db']);
$yform->setValueField('text', ['email', 'E-Mail', '', 'no_db']);
$yform->setValueField('textarea', ['nachricht', 'Nachricht', '', 'no_db']);
$yform->setValueField('submit', ['submit', 'Absenden', '', '', '', 'btn btn-primary']);
// Validierung
$yform->setValidateField('empty', ['name', 'Bitte geben Sie Ihren Namen ein.']);
$yform->setValidateField('email', ['email', 'Bitte geben Sie eine gültige E-Mail-Adresse ein.']);
// E-Mail an Admin
$yform->setActionField('tpl2email', ['kontakt_admin', 'info@example.com']);
// Bestätigungsmail an Benutzer (an das Feld "email")
$yform->setActionField('tpl2email', ['kontakt_bestaetigung', 'email']);
echo $yform->getForm();
E-Mail-Template “kontakt_bestaetigung”
Betreff: Ihre Anfrage ist bei uns eingegangen
Hallo REX_YFORM_DATA[field="name"],
vielen Dank für Ihre Nachricht. Wir haben folgende Daten erhalten:
Name: REX_YFORM_DATA[field="name"]
E-Mail: REX_YFORM_DATA[field="email"]
Nachricht:
REX_YFORM_DATA[field="nachricht"]
Wir werden uns schnellstmöglich bei Ihnen melden.
Mit freundlichen Grüßen
Ihr Team
Besserer Ansatz
Mit Reply-To und BCC
<?php
// E-Mail an Admin mit Reply-To auf Benutzer-E-Mail
$yform->setActionField('tpl2email', [
'kontakt_admin', // Template-Name
'info@example.com', // Empfänger
'', // Absender (leer = Standard)
'email' // Reply-To (Feld-Name)
]);
// Optional: BCC an zusätzliche Adresse
$yform->setActionField('tpl2email', [
'kontakt_admin',
'info@example.com',
'',
'',
'archiv@example.com' // BCC
]);
E-Mail-Template im Backend anlegen
- Im REDAXO-Backend zu “YForm” > “E-Mail-Templates” navigieren
- Neues Template anlegen:
- Key:
kontakt_bestaetigung - Betreff:
Ihre Anfrage vom REX_YFORM_DATA[field="createdate" format="d.m.Y"] - Body: (siehe oben)
- Absender:
noreply@example.com - Absendername:
Meine Website
- Key:
Hinweis
Das dritte Parameter der tpl2email-Action kann entweder eine feste E-Mail-Adresse oder der Name eines Formularfelds sein. YForm prüft automatisch, ob der Wert ein gültiger Feldname ist.