Felder nachträglich füllen, Bestätigungsmail verschicken

  • swessel swessel
    Padawan
    0 x
    39 Beiträge
    0 Hilfreiche Beiträge
    03. 10. 2003, 19:20

    Hallo alle

    Die Aufgabe: Ein Formular soll seinen Inhalt an den Webmaster und gleichzeitig eine Bestätigungsmail an den Besucher senden, der das Formular ausgefüllt hat. Die Bestätigungsmail soll einige zusätzliche Angaben enthalten, die auf der Webseite nicht vorhanden sind.
    Diese Aufgabe ist zwar grundsätzlich mit den Bordmitteln von TYPO3 lösbar, aber es bleiben ein paar problematische Stellen. Die Bestätigungsmail an den den Besucher kann erzeugt werden, indem man ein hidden field namens auto_respond_msg aufnimmt, das den Text der Mail enthält. Allerdings ist der Text dann bereits im Quelltext des Formulars enthalten, und das soll nicht sein. Außerdem kann die Bestätigungsmail dann keine Angaben aus dem Formular enthalten.
    Um diese Probleme zu lösen, habe ich in die Datei class.t3lib_formmail.php in Zeile 55 folgenden Text ergänzt:
    [code:1:9ca5423401]...
    function start($V,$base64=1) {
    if ($base64) {$this->useBase64();}
    // ab hier ergänzt
    $TSconfig = explode("
    ", $GLOBALS["TSFE"]->page["TSconfig"]);
    foreach($TSconfig as $element) {
    if (preg_match("/^mailform.(w*?)s*=s*(+?)(.*)$/", $element, $replace)) {
    $V[$replace[1]] = $replace[2] ? $V[$replace[1]]." ".trim($replace[3]) : trim($replace[3]);
    }
    }
    foreach($V as $key => $element) {
    $V = preg_replace("/###".$key."###/", $element, $V);
    }
    // bis hier
    if (is_array($V)) {
    ...[/code:1:9ca5423401]
    jetzt ist es möglich im Feld TSconfig der [b:9ca5423401]Zielseite[/b:9ca5423401] (dort wo Sie "Ihre Nachricht wurde verschickt" o.ä. anzeigen) Felder im Mailformular nachträglich zu setzen. (Ich habe mir lange überlegt, wohin damit. Wissen Sie eine bessere Stelle?) Ein Plus-Zeichen hängt Inhalte an das Feld an, ohne Plus-Zeichen wird der Feldinhalt ersetzt. Dabei können auch Platzhalter für Feldinhalte verwendet werden. Für das Feld auto_respond_msg kann man also z.B. schreiben:[code:1:9ca5423401]mailform.auto_respond_msg = Vielen Dank für Ihren Auftrag!
    mailform.auto_respond_msg =+/Sie haben mir folgenden Text geschickt:
    mailform.auto_respond_msg =+/###Bemerkung###
    mailform.auto_respond_msg =+/Vielen Dank dafür.
    mailform.auto_respond_msg =+/Wenn Sie gerade Geld übrig haben, überweisen
    mailform.auto_respond_msg =+Sie das doch bitte auf das Konto xyz
    [/code:1:9ca5423401]
    Es ist jetzt auch nicht mehr nötig, die eigene EMail-Adresse in einem hidden field im Formular mit anzugeben und so den Spidern der Spammer zu präsentieren:
    [code:1:9ca5423401]mailform.recipient = "My Name" <myname@mydomain.de>
    [/code:1:9ca5423401]
    Im Formular können Sie das Feld leer oder weg lassen (oder die Mailadresse Ihres Intimfeindes reinschreiben).
    Bleibt noch das Problem mit den Schrägstrichen. Im Feld auto_respond_msg bedeuten Schrägstriche einen Zeilenumbruch und können daher nicht selbst in der Bestätigungsmail auftauchen. In der Datei class.t3lib_htmlmail.php habe ich daher die Zeile 395
    [code:1:9ca5423401]$theParts[1] = str_replace("/",chr(10),$theParts[1]);
    [/code:1:9ca5423401]
    ersetzt durch
    [code:1:9ca5423401]$theParts[1] = str_replace("//","###---###",$theParts[1]);
    $theParts[1] = str_replace("/","
    ",$theParts[1]);
    $theParts[1] = str_replace("###---###","/",$theParts[1]);
    [/code:1:9ca5423401]
    Jetzt werden doppelte zu einfachen Schrägstrichen und nicht mehr durch Zeilenumbrüche ersetzt, und ich kann an die Bestätigung anhängen
    [code:1:9ca5423401]mailform.auto_respond_msg =+/Und besuchen Sie doch bitte http:////www.junko.de
    [/code:1:9ca5423401]
    Ich hoffe, daß meine Ausführungen dem einen oder anderem helfen.

    Stephan


  • 1
  • 0 x
    29 Beiträge
    0 Hilfreiche Beiträge
    06. 12. 2008, 13:50

    Hallo Stephan,

    ich versuche nun das Beipsiel auch auf meiner Seite, aber wie und wo trage ich die zeilen

    [TS]mailform.auto_respond_msg[/TS] ein und wie.
    In die Konstanten?

    und wie ersetze ich diesen Code
    [TS]$theParts[1]= str_replace("//","###---###",$theParts[1]);[/TS]

    Bin für jede Hilfe Dankbar, denn ich möchte dazu keine Extension installieren.

    danke[/HTML]

  • 1