Direct Mail

Newsletter-Versand mit TYPO3 Teil 2

Die einfache Installation der notwendigen Erweiterungen für das Direct-Mail-System liefert Ihnen zwar schon ein funktionierendes System, um notwendige Anpassungen kommt man in den meisten Fällen aber nicht herum. Die Newsletter-Empfänger werden in diesem Workshop aus den TYPO3-Website-Benutzern abgeleitet. Außerdem werden Sie erfahren, wie Sie mit TYPO3 mehrere tausend E-Mails gleichzeitig versenden können.

Website-Benutzeranmeldung verwenden

Im letzten Workshop wurde die Erweiterung „Direct Mail Subscription“ zum Abonnieren des Newsletters verwendet. Diesmal verwenden wir ein Webportal, in dem sich Anwender registrieren können. In den meisten Fällen geschieht dies bei TYPO3 durch eine Anmeldung als Frontend- oder Website-Benutzer.

Das Anmeldeformular nach einer kleinen Schönheitskur und Erweiterung um die Formularelemente für das Newsletter-Abo.

Das Anmeldeformular nach einer kleinen Schönheitskur und Erweiterung um die Formularelemente für das Newsletter-Abo.

Der Benutzer wird dabei in einem Datensatz gespeichert, in dem nun das Newsletter-Abo mitverwaltet werden soll. Da die Website-Benutzer neben ihrem Namen und ihrer E-Mail-Adresse weitere Angaben machen sollen, wird eine Erweiterung benötigt. Die Extension „Frontend User Administration“ eignet sich bestens zur Erfassung und Verwaltung dieser zusätzlichen Daten. Nachdem die Extension (Extension-Key: „feuser_admin“) über den Extension-Manager installiert wurde, muss ein Seiteninhaltselement vom Typ „Plugin“ auf einer Seite eingefügt und die Erweiterung „Front End User Admin“ selektiert werden. Beim Aufruf der Seite erscheint dann bereits ein Anmeldeformular mit zahlreichen Eingabefeldern.

Das Anmeldeformular erweitern

Dieses Anmeldeformular werden wir nun erweitern, sodass bei der Registrierung auf der Website der Newsletter eingestellt werden kann. Das Template mit dem Anmeldeformular findet sich bei lokaler Installation der Erweiterung unter „typo3conf/ext/feuser_admin/pi/fe_admin_fe_users.tmpl“, wenn die Erweiterung global installiert wurde unter „/typo3/ext/feuser_admin/pi/fe_admin_fe_users.tmpl“. Mit einem WYSIWYG-Editor lässt sich das Formular relativ schnell verändern und an das Website-Layout anpassen. Sollen allerdings neue Felder in das Formular integriert werden, sind einige zusätzliche Punkte zu beachten.

Subparts in der HTML-Vorlage

Das Template ist in mehrere Subparts unterteilt. Der erste Subpart „TEMPLATE_CREATE“ liefert das Formular aus, mit dem der Benutzer bei einer Neuanmeldung seine Daten übergibt. Das Formular in dem Subpart kann nun um die Felder für das Newsletter-Abo erweitert werden. Die Newsletter-Informationen werden in den Feldern „module_sys_dmail_category“ und „module_sys_dmail_html“ abgelegt. Diese Felder werden bei der Installation der Direct-Mail-Erweiterung sowohl in die Tabelle „tt_address“ als auch in die Tabelle „fe_users“ hinzugefügt. Im Feld „module_sys_dmail_category“ wird die Newsletter-Kategorie eingetragen. Null bedeutet hier, dass kein Newsletter aboniert ist. Das Feld „module_sys_dmail_html“ kann verwendet werden, wenn zwischen Text- und HTML-Newslettern unterschieden werden soll. In das Formular haben wir lediglich zwei Umschalter integriert. Mit dem ersten kann der Newsletter aktiviert und deaktiviert werden.

HTML
<input type="radio" name="FE[fe_users][module_sys_dmail_category]" value="0">
<input name="FE[fe_users][module_sys_dmail_category]" type="radio" value="1">
Listing 1

Über den zweiten Umschalter kann zwischen HTML- und Text-Newsletter selektiert werden.

HTML
<input type="radio" name="FE[fe_users][module_sys_dmail_html]" value="0">
<input name="FE[fe_users][module_sys_dmail_html]" type="radio" value="1">
Listing 2

Der Subpart „TEMPLATE_CREATE_PREVIEW“ dient zur Generierung einer Vorschau. Am Ende des Vorschau-Formulars, noch vor den beiden Schaltflächen, finden sich einige Formularelemente vom Typ „hidden“. Hier müssen die neuen Elemente aus dem Eingabeformular eingefügt werden, da sonst die Angaben zum Newsletter-Abo nicht von der Vorschau weitergereicht werden.

HTML
<input type="hidden" name="FE[fe_users][module_sys_dmail_html]">
<input type="hidden" name="FE[fe_users][module_sys_dmail_category]">
Listing 3

Da über diese Erweiterung auch die Benutzerdaten bearbeitet werden können, gibt es zwei weitere Subparts. Der Subpart „TEMPLATE_EDIT“ ist ähnlich wie „TEMPLATE_CREATE“ aufgebaut. Auch hier gibt es mit „TEMPLATE_EDIT_PREVIEW“ einen entsprechenden Subpart, der für die Vorschau bei der Bearbeitung von Benutzerdaten zuständig ist. Die im letzten Absatz beschriebenen Modifikationen sollten Sie auch hier durch führen, da Angaben sonst beim Bearbeiten verloren gehen könnten. Das modifizierte Template kann anschließend mit dem Constant-Editor übertragen und in die Erweiterung eingebunden werden.

Wer die Erweiterung mit dem Constant-Editor anpasst, spart sich viel Ärger beim Schreiben des TypoScripts, das später immer noch manuell über die Ansicht Info/Modify angepasst werden kann.

Wer die Erweiterung mit dem Constant-Editor anpasst, spart sich viel Ärger beim Schreiben des TypoScripts, das später immer noch manuell über die Ansicht Info/Modify angepasst werden kann.

TypoScript anpassen

Damit die von der Vorschau übergebenen Daten von der Erweiterung verarbeitet werden können, müssen der Erweiterung nun noch die neuen Felder bekannt gemacht werden. Dies geschieht über die Eigenschaft „plugin.feadmin.fe_users.create.fields“. Standardmäßig sind hier folgende Felder angegeben: „username“, „password“, „name“, „email“, „usergroup“, „address“, „telephone“, „fax“, „title“, „company“, „zip“, „city“, „country“, „www“. Dieser Eigenschaft müssen jetzt die beiden Felder „module_sys_dmail_category“ und „module_sys_dmail_html“ hinzugefügt werden. Am einfachsten lässt sich das mit dem TypoScript-Object-Browser bewerkstelligen.

Der TypoScript-Objekt-Browser verhindert Tippfehler und Irrtümer bei der Objektreferenzierung.

Der TypoScript-Objekt-Browser verhindert Tippfehler und Irrtümer bei der Objektreferenzierung.

Die Änderungen im TypoScript-Object-Browser können im Template-Modul in der Ansicht „Info/Modify“ überprüft werden. Im Setup-Feld steht dann folgendes TypoScript:

TYPOSCRIPT
plugin.feadmin.fe_users.create.fields =
username,password,name,email,usergroup,address,telephone,fax,title,company,zip,city,country,www,
module_sys_dmail_category, module_sys_dmail_html
Listing 4

Jetzt kann die Erweiterung die im Template angelegten Zusatzfelder verarbeiten und die im Anmeldeformular zum Newsletter gemachten Angaben in die entsprechenden Datenbankfelder schreiben. Die Felder „module_sys_dmail_category“ und „module_sys_dmail_html“ werden jedoch nicht angezeigt. Ob die Daten aus dem Anmeldeformular auch in den Datenbankfeldern ankommen, sollte also mit phpMyAdmin überprüft werden.

Den Newsletter-Versand automatisieren

Die Newsletter werden im Mailer-Engine-Status über den Link "Invoke-Mailer-Engine" verschickt. TYPO3 schickt beim Klick auf den Text den Newsletter an die ersten fünfzig Empfänger. Wenn mehrere Empfänger adressiert sind, muss der Link entsprechend mehrfach betätigt werden. Dies kann schnell lästig werden, besonders wenn tausende Empfänger den Newsletter erhalten sollen. Für diesen Fall sollte der Versand automatisiert werden. Dabei ist das Skript „dmailerd.phpcron“ im Unterverzeichnis „mod“ der Erweiterung behilflich. In der ersten Zeile dieses Shell-Skripts muss der Pfad zum PHP-Binary überprüft werden. Die erste Zeile des Skripts ist wichtig, da sie festlegt mit welchem Interpreter die Datei „dmailerd.phpcron“ ausgeführt werden soll.

Über einen Cronjob kann der Aufruf dieses Skripts auf Linux-Systemen automatisiert werden. Mit dem Befehl „crontab –e“ wird die entsprechende Datei geöffnet, in die der Aufruf des Direct-Mail-Skripts eingetragen wird. Hier muss der absolute Pfad zum Skript angegeben werden. Mit dem folgenden Eintrag wird das Skript einmal pro Minute vom System aufgerufen.

CRON
*/1 * * * * /.../typo3/ext/direct_mail/mod/dmailerd.phpcron > /dev/null
Listing 5

Sollte es zu Problemen beim Aufruf des Shell-Skripts kommen, kann das Shell-Skript auch in ein PHP-Skript gewandelt werden. Dazu legen wir einfach eine Kopie des Originals an.

SHELL
cp dmailerd.phpcron dmailerd.php
Listing 6

Im PHP-Skript entfernen Sie jetzt die erste Zeile mit der Angabe zum PHP-Binary. Jetzt kann dieses PHP-Skript mit jedem beliebigen Webbrowser aufgerufen werden. Auf Linux-Systemen eignet sich dazu der Text-Browser „Lynx“, es kann aber auch ein beliebiger anderer verwendet werden. Beim Aufruf des PHP-Skripts muss dann allerdings eine URL statt des absoluten Verzeichnispfads angegeben werden, über die das Skript aufgerufen wird. Hier kann eine Domain, eine IP-Adresse oder auch der Localhost verwendet werden. Der Eintrag in der „crontab“ für den Aufruf des PHP-Skripts würde dann wie folgt aussehen.

CRON
*/1 * * * * lynx --dump http://localhost/TYPO3Projekt/typo3/ext/direct_mail/mod/dmailerd.php > /dev/null
Listing 7

Die Vorgabe „$dir = dirname($HTTP_ENV_VARS["_"]);“ führt in vielen Umgebungen zu Problemen. Meist genügt es hier den absoluten Pfad zum Verzeichnis anzugeben, in dem sich das dmailerd-Skript befindet. Auch die Pfadangaben für „PATH_typo3“ und „PATH_site“ können manuell gesetzt werden, um Fehler zu vermeiden.

PHP
define("PATH_typo3", "/var/www/TYPO3Projekt/typo3/");
define("PATH_site", "/var/www/TYPO3Projekt/");
Listing 8

Automatisierug unter Windows

Auf Windows-Servern lassen sich solche Aufrufe durch Tasks automatisieren. Dazu muss aber zunächst eine Batchdatei angelegt werden, die den eigentlichen Aufruf beinhaltet. Diese kann mit einem beliebigen Texteditor angelegt werden und muss lediglich auf „.bat“ enden. In dieser Datei tragen Sie die absoluten Pfad zur Datei „php.exe“ und zum dmailerd-PHP-Skript ein.

BATCH
D:\apache\php\php.exe 
D:\apache\htdocs\TYPO3Projekt\typo3\ext\direct_mail\mod\dmailerd.php
Listing 9

Anschließend kann der Task in der Winodws-Systemsteuerung unter „Geplante Tasks“ angelegt werden. Als ausführendes Programm wählen Sie hier die eben erzeugte Batchdatei aus. Auf der Registerkarte „Zeitplan“ kann die tägliche Ausführung des Tasks festgelegt werden.

Zunächst muss ein grober Zeitplan festgelegt werden, nach dem die Batchdatei ausgeführt wird.

Zunächst muss ein grober Zeitplan festgelegt werden, nach dem die Batchdatei ausgeführt wird.

Über die erweiterten Zeitplanoptionen lässt sich der grobe Zeitplan durch Wiederholungsintervalle weiter verfeinern.

Über die erweiterten Zeitplanoptionen lässt sich der grobe Zeitplan durch Wiederholungsintervalle weiter verfeinern.

In den erweiterten Optionen lassen sich zusätzliche Wiederholungsintervalle einstellen, sodass das Skript auch unter Windows jede Minute einmal ausgeführt werden kann.

Die Arbeit des Tasks oder Cronjobs kann im Mail-Engine-Status überprüft werden. Zu sehen ist auch, wie viel Zeit der Versand der Newsletter an alle Empfänger in Anspruch nimmt.

Die Arbeit des Tasks oder Cronjobs kann im Mail-Engine-Status überprüft werden. Zu sehen ist auch, wie viel Zeit der Versand der Newsletter an alle Empfänger in Anspruch nimmt.

Fazit

Direct Mail ist ein extrem leistungsfähiges System, das sich auch für den Versand größerer E-Mail-Mengen eignet. Weil beliebige Datenbanktabellen für die Generierung der Empfängerlisten herangezogen werden können, arbeitet Direct Mail mit allen Beteiligten ohne Scheu perfekt zusammen. So lässt sich fast jede beliebige Registrierungsmethode einsetzen, über die Website-Besucher sich für den Empfang eines Newsletters anmelden können.

- Anzeige-

Dieser Artikel stammt aus:

 

Weitere Artikel dieser Ausgabe

4.5 worth of usabililty, please

Crammed in between a representative of disillusioned french youth and a too-much-wine-drinking... »

Asterisk

Eine moderne Softwaretelefonanlage

Über 100 Jahre lang tat das analoge Telefon solide seinen Dienst, bis es Anfang der 90er... »

Barrierefreiheit in der Praxis

Das Thema Barrierefreiheit ist präsenter als je zuvor und auch TYPO3 hat sich besonders... »

Barrieren ausgestochen

Am 9. Dezember wurden in Potsdam die BIENE-Awards 2005 verliehen

Über 300 Websites hatten sich für den bedeutendsten Preis für barrierefreies... »

commerce

Die lang erwartete TYPO3 Extension „commerce“ steht kurz vor der Veröffentlichung

Die in diesem Artikel beschriebene „commerce“-Extension wurde maßgeblich durch... »

Das Netzwerk beim Netzwerk

OTRS im Einsatz bei openBC

Die weltweite Internetplattform für Businesskontakte openBC setzt im Support vollständig... »

Extension Coordination Team (ECT)

Im TYPO3 Extension Repository befinden sich inzwischen über 1.000 Erweiterungen für... »

Firefox im Eigenbau

Schlank, schnell und sicher

Firefox ist mehr als nur ein Browser zum Surfen. Das Programm bietet viele kleine, oft versteckte... »

Großer Schritt für große Helfer

Asterisk im Einsatz bei der Evangelischen Stadtmission Kiel

Als Ersatz für eine herkömmliche Telefonanlage hat sich die Ev. Stadtmission Kiel... »