Email-Ketten bei Contao Kontaktanfragen vermeiden

Mit etwas PHP-Programmierkunst lassen sich Email-Ketten, die Contao Anfrage-Formulare erzeugen, vermeiden. Das ist praktisch: Anfragen in der Inbox bleiben so im Blick und werden nicht einfach wegen der Bearbeitung einer Anfrage in der Kette automatisch als gelesen markiert. So lässt sich der komfortable E-Mail-Versand von Kontaktanfragen nutzen und das Risiko, Anfragen zu übersehen, minimieren.

Wohl kaum eine moderne Internetseite kommt ohne Anfrage-Formulare aus. Die Content Management Systeme bieten für die Anfragen verschiedene Modi. Die Anfragen werden in der Datenbank des CMS gespeichert oder ganz praktisch an eine vordefinierte E-Mail Adresse versandt. Der Versand der Kontaktanfrage an eine vorab definierte E-Mail Adresse hat allerdings oft einen unangenehmen Beigeschmack, so auch bei Contao. Die Betreffzeile wird im Standardverfahren nicht variiert. Im E-Mail Client entstehen so E-Mail-Ketten. Das sorgt an sich für Ordnung. Doch wird eine E-Mail der Kette bearbeitet, so wird die Kette als gelesen markiert. Schnell werden dann unbeantwortete Anfragen übersehen. Bei E-Commerce Projekten kann dies schnell bares Geld kosten.

Einfache Lösung behebt das Problem

Die Lösung ist in Contao mit ein paar Änderungen im Source-Code schnell gefunden. Für die Lösung muss nur eine Countervariable eingefügt werden, die in der Datenbank gespeichert wird. Bei jeder Anfrage wird diese Zählvariable an den Betreff angehängt. Die nötige Funktion, nennen wir diese einmal mysubject, wird für ein einfaches Warten und eine gute Übersicht in eine separate Datei gepackt.

In der Datei Form.php, die im Contao Verzeichnis unter dem Pfad ../system/modules/core/forms zu finden ist, wird die extra Datei (test_c.php) im Kopf eingebunden.

include ‚test_c.php‘;

In der Zeile 325 der Form.php sind jetzt nur noch kleine Änderungen nötig.

Wir ersetzen
$email->subject = $arrSubmitted['subject'];
gegen
$email->subject = mysubject();

und bestimmen den Betreff der Datei nun mit unserer Funktion selbst. Den Wert der Variablen $arrSubmitted['subject'] verwerfen wir bei dieser Lösung einfach. Das ist nicht immer unproblematisch und aus Sicht einer gründlichen Softwareentwicklung nicht ganz sauber. Soll $arrSubmitted['subject'] nicht verworfen werden, muss der Wert in der mysubject-Funktion weiterverarbeitet werden. Dazu übergeben wir $arrSubmitted['subject'] einfach als Parameter an mysubject und setzen die Implementierung der Funktion in der separaten Datei (test_c.php)  nach unseren Wünschen um. Jetzt laden wir die Datei test_c.php hoch in /system/modules/core/forms. Die  test_c.php kann folgenden Code erhalten:

<?php
function mysubject(){
$host = „localhost“;
$user = „XXX “ ;
$password = „XXX“ ;
$tablename = „XXX_contao“;
$db = mysql_connect ($host, $user, $password);
if (!$db)
{
die(„<br> Die Verbindung zum DB-Server ist fehlgeschlagen“);
}
$res = mysql_select_db ($tablename, $db );
if(!$res)
{
die(„<br> Datenbank $tablename wurde nicht gefunden“);
}
$query = „SELECT * FROM tl_betreff“;
$res = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
$zaehler = $row[0];
}
$zaehler +=1;
$eintrag = ‚UPDATE tl_betreff SET zaehler = (\“.$zaehler.’\‘);‘;
$eintragen = mysql_query($eintrag);
return „Anfrage „.$zaehler;
}
?>

Counter per Datenbank umsetzen

Der Counter kann dabei durch eine separate Tabelle in der Datenbank realisiert werden.  Arbeiten wir sauber, prüft unser Code, ob die Tabelle vorhanden ist und erzeugt eine passende Tabelle, sofern dies nicht der Fall ist. Dazu bietet Mysql mit „Create Table 'tabellenname' If Not Exists ...“ die passende Funktionalität.

Zurück zur Form.php. Die Zeile 325 würde so aussehen:
$email->subject = mysubject();

Hat die Funktion mysubject als Rückgabewert von uns den String „Anfrage“ plus Counter erhalten, kommen die Anfragen mit dem Betreff „Anfrage 1“, „Anfrage 2“, usw. im Postfach an. Bei der Variante mit dem Übergabewert $arrSubmitted['subject'] wird der Inhalt dieser Variable mit angehängtem Counter gesendet. Diese Variante ermöglicht zum Beispiel den Erhalt einer sprachspezifischen Betreffzeile.

Aus für E-Mail-Ketten

Email Ketten entstehen so nicht mehr. Das Risiko, Anfragen durch die Demarkierung der gesamten Email-Kette zu übersehen ist gebannt. Natürlich kann diese Implementierung noch weiter professionalisiert werden. Der einfache Counter kann durch eine mehrstellige Anfrage ID ersetzt werden. Wird auf die Anfrage per Mail geantwortet, kann der Betreff so erhalten bleiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


sechs − = 4