Fehler in email-body Erstellung bekannt?

  • Aufgefallen ist das Problem, da ich für unseren Shop einen automatischen email-Versand eingebaut habe.
    Diese Automatik prüft das Vorhandensein von Rechnungen, Lieferscheine, Auftragsbestätigungen die von unserer Warenwirtschaft als PDF-Dateien erstellt und in ein definiertes Verzeichnis abgelegt werden.
    Beim Start des Scriptes werden alle emails falsch erstellt. Da wir HTML-email-Versand benutzen, wird zwar das HTML-email Template korrekt aus der DB-Tabelle ausgelesen, der TXT-Teil jedoch fehlt völlig. Dadurch wird die email nicht als "multipart" erkannt. Durch den PDF-Anhang wird der HTML-Code als "plain" interpretiert. Ein Umschalten zwischen TXT-email und HTML-email ist im email-Client nicht möglich. Der Anhang läßt sich öffnen.

    Folglich mußte es einen Bug in cseo-Funktionen und/oder Smarty selbst geben.
    Letzlich gab es zwei Stellen an denen ich die Fehler korrigieren mußte.

    1. Smarty resource plugin
    Für cSEO wurden zwei customized plugins erstellt, jeweils für HTML und TEXT. Diese Dateien liegen hier:
    /includes/classes/Smarty_2.6.26/cseo_plugins (resource.html.php, resource.text.php)
    In resource.text.php hat die erste Funktion einen falschen Namen (falsch: smarty_resource_txt_template) und das selectete Feld wird nicht an die Smarty-Variable übergeben.
    Die erste Funktion muß folglich lauten:

    Code
    function smarty_resource_txt_source ($tpl_name, &$tpl_source, &$smarty_obj) {	$tpl_data = xtc_db_fetch_array(xtc_db_query(" SELECT email_content_text FROM emails WHERE email_name = '".$tpl_name."' AND languages_id = '".$_SESSION['languages_id']."' "));	if (sizeof($tpl_data) == 1) {		$tpl_source = $tpl_data['email_content_text'];		return true;	} else {		return false;	}}


    Dies behebt aber den eigendlichen Fehler nicht, denn nun wird nur die erste email falsch erzeugt. Alle weiteren emails werden nun auch von der Struktur korrekt aufgebaut. Und das innerhalb einer while-Schleife - komisch.
    Also weiter gesucht.

    2. cSEO Funktion im inc-Verzeichnis
    In der Datei "cseo_get_mail_body.inc.php" findet man alle Funktionen aus den o.a. Smarty-Plugins wieder und teilweise inklusive der Fehler.
    Außerdem werden hier die resourcen erneut in Smarty registriert. Dies ist nicht nötig nach der o.a. Korrektur.
    Generell können alle Funktionen und die Smarty->register_resource(....) und signatursmarty->register_resource(...) entfernt werden.
    In dieser Datei bleibt also übrig:

    Das war's. Jetzt klappt es.
    Die übertragene email wird in meinem Webmail-Programm als TEXT angezeigt. Im Footer bei "Anhänge" erscheinen zwei Einträge:
    1. untitled-[1.2] als [txt/html] --> die HTML-email
    2. Auftragsbestaetigung.pdf als [application/octed-strem] --> der Datei-Anhang

    Wer also ebenfalls Probleme bei der email-Erstellung hat, sollte dies einfach mal ausprobieren.
    Vielleicht wurde dieses Problem aber auch schon behoben (jedenfalls nicht in CE), dann bitte kurze Info dazu.

    Kommentare erwünscht.