osCommerce EMail bei Statusänderung einer Bestellung anpassen

Das Ziel: Der Text einer EMail (bei Statusänderungen) innerhalb von osCommerce soll angepasst werden.
Das Problem: osCommerce versendet EMails standardgemäß als reinen Text. Nun gibt es diverse Erweiterungen, die es uns ermöglichen, mit releativ niedrigem Aufwand auch HTML - Mails zu erstellen.

Meine genutzte osCommerce Contribution ermöglicht aber nur die Anpassung der Bestellbestätigung. Will man den Kunden per EMail über den Status der Bestellung informieren, werden wieder Text-Mails verwendet. Hier soll aber ebenfalls eine HTML - EMail mit hübschem Briefkopf versendet werden.

Wo wird die Mail erstellt?

Zuerst einmal müssen wir den Code finden, der uns die Statusmail erzeugt. Die relevante Datei ist [katalog-root]/admin/orders.php. Den Code finden wir in dieser Datei hinter:

if ( ($check_status['orders_status'] != $status) || tep_not_null($comments)) {
 tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");

und vor:

tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), '" . tep_db_input($customer_notified) . "', '" . tep_db_input($comments) . "')");

Mit der Suchfunktion einer guten IDE sollten wir den für uns interessanten Bereich so schnell finden.

Wo sind die Kommentare?

Nicht vorhanden :-| Nun geht es also daran, die Codezeilen genauer unter die Lupe zu nehmen, zu kommentieren und evtl. zu separieren. Wenn wir hier zusätzlich HTML - Elemente einbringen wollen, tut das der Übersicht sichtlich gut. Ein Ergebnis des formatierten Original-Codes könnte sein:

// BOF EMAIL - UPDATE ORDER
 $customer_notified = '0';
 if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) {
 $notify_comments = '';
 if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) {
 $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";
 }
			// construct mail content
			// --- storename
 $email = STORE_NAME . "\n";
 // --- seperator
 $email .=EMAIL_SEPARATOR . "\n";
 // --- order-number
 $email .= EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n";
 // --- account history url
 $email .= EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n";
 // --- order date
 $email .= EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n";
 // --- comments (see code above )
 $email .= $notify_comments;
 // --- new status
 $email .= sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);
			// send mail
 tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
 $customer_notified = '1';
 }
 // EOF EMAIL - UPDATE ORDER

Jetzt haben wir eine gute Ausgangslage, um Änderungen und Ergänzungen am Code vorzunehmen. Um die Standard-Funktionen von osCommerce später wiederherzustellen, empfiehlt es sich an dieser Stelle ein Backup der Codezeilen anzulegen.

Wer bis zu diesem Punkt gelesen (und verstanden) hat, sollte ohne Probleme HTML - Elemente nach seinen Bedürfnissen einfügen können. Daher sei hier auf ein Code-Beispiel verzichtet, da es zu sehr auf die Anforderungen meiner osCommerce Installation eingeht.

Diesen Artikel habe ich bereits in ähnlicher Form im Februar 2007 in meinem Meta-Blog veröffentlicht. Durch die thematische Neuausrichtung zieht er nun auf ShopSeo.de um.

1 Antwort to “osCommerce EMail bei Statusänderung einer Bestellung anpassen”

  1. Vielen Dank für diese Erläuterung … hat mir :)

    Beste Grüße
    Tei

Kommentieren

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.

Folgende XHTML Elemente können verwendet werden: : <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>