Dienstag, 27. Dezember 2011

Form: Postprocessor um Kopie an Sender zu senden

Die Postprocessoren haben es mir gerade angetan. Liegt wohl daran, dass sie so schnell und schmutzig gehen ;)
In diesem Postprocessor geht es darum, wie man dem Absender auch eine Kopie zuschickt. In allen Fällen sollte man daran denken, dass so ein Formular auch als Mailschleuder genutzt werden könnte. Richtigen Schutz bietet da wohl nur ein Captcha, für eingeloggte User schreibe ich später meine Lösung dazu.
Dieser Postprocessor nimmt den Mail-Postprocessor und erweitert ihn sehr direkt. Dafür als erstes mal die Datei Mail.php kopieren und die Kopie in Mailtosendertoo.php umbenennen. Nun den Namen der Klasse in tx_form_System_Postprocessor_Mailtosendertoo ändern, bevor wir mit dem Anpassen der Funktion anfangen können.
In die Funktion process() kommt hinter den Aufruf
$this->send(); 
Noch eine neue Zeile, um die Funktion aufzurufen, in der die Kopie gesendet wird :
$this->sendCopyToSender();
Die neue Funktion sieht dann so aus:
 /**
 * Changes the To, Reply-To, Subject and sends message to the sender of this message
 * Function makes use of the same mailMessage object, thus should be used only after the original message is send* @return void
 */
protected function sendCopyToSender() {
 $this->mailMessage->setSubject("Die folgende Nachricht wurde eben in Deinem Namen via BiTS-Alumni.de verschickt");
 $this->mailMessage->setReplyTo($this->mailMessage->getSender());
 $this->mailMessage->setTo($this->typoScript['senderEmail']);
 }
 $this->send();
}
 Die Funktion tauscht entsprechend Subject, Empfänger, und ReplyTo der Email. Danach wird die Email gesendet.

Im Typoscript anstatt
 1 = Mail  
 1 {  
 …  
 }  
Jetzt:
 1 = Mailtosendertoo  
 1 {  
 …  
 }  
Der Rest bleibt gleich. Fertig!

2 Kommentare:

  1. Hi,

    bin gerade auf deinen Blog gestoßen, weil ich einen Postprocessor schreibe, der Kontakdaten, die in das Formular eingetragen werden, als VCard an die Mail anhängt.

    Dabei ist mir aufgefallen: Sauberer und einfacher, als die Datei Mail.php zu kopieren ginge es dadurch, von der Klasse des Mail-Postprocessors zu erben (Stichwort: Objektorientierung):

    class tx_form_System_Postprocessor_Vcardmail extends tx_form_System_Postprocessor_Mail {

    Dann musst du nur die Funktionen, die du änderst bzw. hinzufügst in deine Klasse stecken. Der Rest wird durch Vererbung automatisch übernommen.

    Der Rest kann so bleiben, wie du es beschrieben hast.

    Schöne Grüße

    AntwortenLöschen
  2. Hi Balduin,

    danke für den Tipp. Wie war das mit den Bäumen und dem Wald? Werde es hier anpassen, wenn ich mal wieder etwas schreibe oder mit dem Update auf Typo3 4.7. Da ändert sich ja dann eh einiges.

    AntwortenLöschen