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

  1. Im REDAXO-Backend zu “YForm” > “E-Mail-Templates” navigieren
  2. 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

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.