TYPO3-Newsletter mit Direct Mail und Direct Mail Subscription

13. März 2015 | 83 Kommentare

TYPO3 Tutorials by undkonsorten BerlinWohl zu kaum einer anderen TYPO3-Extension gibt es so viele Tutorials und Forenbeiträge wie zu Direct Mail und Direct Mail Subscription. Und auch wenn es etliche gibt, die Direct Mail entnervt abgeschworen haben und stattdessen auf leistungsfähigere Lösungen setzen, ist Direct Mail für kleinere Newsletter, die ihre Adressen vor allem über die Webseite selbst sammeln, nach wie vor eine brauchbare Lösung. Deswegen von uns an dieser Stelle der Versuch, den vielen Anleitungen eine weitere – hoffentlich verständlichere – hinzuzufügen. Wir versuchen diesen Artikel auch auf dem Stand der Zeit zu halten und upzudaten. Denn mit ein bisschen Routine lässt sich einer Stunde die Grundeinrichtung bewältigen (was nicht heißt, dass für (Text-)Anpassungen, Testen und v.a. das HTML-Template nicht viel, viel Zeit ins Land gehen kann!).

Notwendige Extensions

Wichtig ist: Direct Mail baut auf der Extension Address List  (tt_address) auf, auch wenn das nicht eindeutig dabeisteht. Deswegen: Zuerst tt_address installieren, dann Direct Mail (direct_mail) und dann Direct Mail Subscription (direct_mail_subscription). Wird die Reihenfolge missachtet, wird keine UID-Spalte in der TT-Adress-Datenbank angelegt und entsprechende Fehlermeldungen ausgegeben. Diese sind oft nur sehr garstig zu beheben (Falls Sie wegen genau dieses Fehlers auf dieser Seite gelandet sind: Versuchen Sie mittels phpMyAdmin die Spalte UID in der Tabelle tt_adress manuell anzulegen, wie das in diversen Foren empfohlen wird).

Direct-Mail-Ordner erstellen

Nach der Installation und einem Reload erscheint der Menüpunkt „Direct Mail“ unter „Template„. Jetzt einen SysOrdner anlegen und als Erweiterung in den Seiteneigenschaften des Ordners „Direct Mail“ auswählen.

Direct Mail (TYPO3) Ordnerstruktur

Dadurch wird der Ordner auch über das Modul Direct Mail verwaltbar. Somit kann man jetzt auf das Modul „Direct Mail“ und den Ordner klicken und im Punkt Modulkonfiguration die Grundeinstellungen (Absender-Mailadresse etc.) vornehmen. Wenn die Webseite auf UTF-8 läuft, dann sollte man auch den Zeichensatz der Mails auf UTF-8 stetzen. Als Kodierungsverfahren verwenden wir die base64. Die Bilder inkludiern wir nicht in die Mails.

Das direct_mail modul

Das Direct-Mail-Modul

Änderungen, die Sie hier vornehmen werden in der Seiten-TSConfig des Ordners „Newsletter“ gespeichert.

Direct-Mail-Statistik

Direct Mail Modul: Wichtig für die Statistik

Direct Mail Modul: Wichtig für die Statistik, die Jump URL’s

Hier können auch Umleitungen für Links größer als 76 Zeichen erstellt werden (sonst kann es durch den Zeilenumbruch zu Problemen mit dem Bestätigungslink kommen). Will man die Newsletter-Statistik nutzen, sollte man die Jump URL’s aktivieren. [BUG #7704/TIPP: Wenn bei der Statistik immer nur ein Empfänger auftaucht, dann sich mal den Bug Tracker anschauen oder einfach auf die aktuelleste Direct-Mail-Version updaten.] Der aktuelle Screenshot ist eine Konfiguration, die bei uns zur Ausgabe von Statistiken führt und damit funktionert. Unter Empfängerliste können Sie eine Testliste mit dem Typ „Normale Liste“ anlegen und einen oder mehrere Empfänger eingeben, speichern und über „Quick Mail“ testen, ob die Mail wie gewünscht ankommt. Ist das der Fall, ist zumindest Direct Mail richtig konfiguriert. Jetzt die wirkliche Newsletterliste anlegen und als Typ „Von Seiten“ auswählen

Direct Mail TypoScript-Template

Im „Newsletter“-Ordner sollte man ein Extension-Template anlegen, dass erstmal alle Angaben aus anderen, zuvor eingebundenen Templates löscht. Es macht nicht wirklich Sinn, die Dinge, die für die Webseite in Templates definiert wurden, auch mit im Newsletter herumzuschleppen. Direct Mail Template: Alles löschen Weiterhin ist es wichtig, dass die Direct-Mail-Templates inkludiert werden, sonst hat man später mit einer Fehlermeldung wie „Newsletter could not be fetched“ zu kämpfen.

Direct Mail TypoScript Templates includieren

Direct Mail TypoScript Templates includieren

Damit wir in dem Newsletter nicht Code, Styles und JavaScripts aus allen anderen Extensions mitschleppen, beginnen wir im Setup mit der großen Säuberung:

TypoScript

plugin {
  tx_cssstyledcontent._CSS_DEFAULT_STYLE >
  tx_ttaddress_pi1 >
  feadmin >
  tx_newloginbox_pi1 >
  tx_srlanguagemenu_pi1 >
  # .... und weitere ....
}
page {
  stylesheet >
  headerData.10 >
  headerData.10 = FILE
  headerData.10 {
	file = {$stylesheet}
	wrap = <!-- | -->
  }
}
config.disableAllHeaderCode = 0
config.disableAllHeaderCode = 0

Wichtig ist noch, in den Constants die URL des Newsletter einzutragen (sonst werden später keine Bilder im Newsletter angezeigt). Dies geht so:

plugin.tx_directmail_pi1.siteUrl = http://www.domain.com/

Achtung! Nach Update von direct_mail auf eine 3.x Version und dem Ausführen des UpdateScripts, wurden keine Bilder mehr im Newsletter (nur in der E-Mail) angezeigt. Abhilfe schafft folgende Angabe im TS des Newsletters:

config.absRefPrefix = http://www.euredomain.de/

Das Newsletter-Template/HTML-Vorlage

Für eine saubere Ausgabe des Newsletters  – vor allem wenn es mehrere Spalten geben soll – ist es leider kaum möglich, ein solides Layout zu bauen, das in Webmailern (Gmail, GMX, web.de, hotmail), Thunderbird, Outlook (vor allem 2007 und 2010 – HASSS!), Eudora Mail (u.v.a.m.) angezeigt wird, ohne auf Tabellen zurückzugreifen. Wir sind uns im Klaren darüber, dass das mit Barrierefreiheit nicht einhergeht, aber was soll man tun… Die Online-Newsletterdienste wie MailChimp setzten auch auf Tabellen.

Wenn man sich lernen will, wie robuste HTML-Newsletter-Templates gebaut werden, lohnt es sich, die Email Design Reference von Mailchimp, sowie deren Boilerplates anzuschauen. Ansonsten muss man leider sagen, je näher man im Ur-HTML Version -1.0 coded, desto höher ist die Chance, dass es überall sauber aussieht. Da fängt man plötzlich wieder an bei selfhtml zu suchen, wie man denn ein Floating ohne CSS hinbekommen hatte. Versucht generell, ohne externe StyleSheets auszukommen. Vergesst Hintergrundbilder! Ein Tool zum Testen vom fertigen Newsletter-Code ist z.B. Putsmail.

Direct Mail mit Plain-Text

Um die Newsletter auch als Plain-Text zu versenden, muss man im Modul „Direct Mail“ > „Konfiguration“ bei „Format der E-Mails“ der Wert „HTML und Text“ auswählen sowie bei „Parameter, normaler Text“ den Wert &type=99 eintragen. Das sorgt später dafür, dass aus der Newsletter-Seite auch als Plain Text Seite generiert/ausgelesen wird. Natürlich muss dazu das „Direct Mail Plain text“-Template im Root Template unter „Include static (from extensions)“ geladen werden (siehe Screenshot oben zum TypoScript-Template). Das Template, welches nun geladen wird, wenn eine Seite mit &type=99 aufgerufen wird, befindet sich unter: /typo3conf/ext/direct_mail/pi1/tx_directmail_pi1_plaintext.tmpl. Dieses sollte nun noch nach Bedarf angepasst werden.

Direct Mail Subcription

Damit können zwar im Backend Usergruppen angelegt werden, an die dann ein Newsletter verschickt werden kann, die Möglichkeit, sich direkt auf der Webseite anzumelden, fehlt allerdings noch. Hierfür benötigen wir „Direct Mail Subscription“, das wir ja bereits installiert haben. Dieses einfach als „Neuer Seiteninhalt > Plugin > Direct Mail Anmeldung“ einbinden. Die Newsletter-Anmeldung sollte jetzt auf der entsprechenden Seite korrekt angezeigt werden und auch eine Bestätigungsmail verschicken. Lediglich zwei Probleme sind noch zu lösen: Erstens ist alles in Englisch und zweitens funktioniert die Anmeldung für den Benutzer zwar, die Adressen verschwinden aber im Nichts. Die Sprachausgabe wird durch die Datei fe_admin_dmailsubscrip.tmpl gesteuert, die normalerweise im Extension-Verzeichnis liegt [typo3conf/ext/direct_mail_subscription/pi]. Ich lege sie nach dem Editieren aber immer im Fileadmin ab und lege den entsprechenden Pfad dorthin (siehe unten). Standardmäßig ist in Direct Mail Subscription auch eine Möglichkeit vorgesehen, Newsletter verschiedener Kategorien zu abonnieren. Da ich das normalerweise nicht brauche, kommentiere ich die entsprechende Passage (ca. Zeile 160 – 180) aus. Da ich keine weitere Daten erheben will, nervt mich auch die „Profil bearbeiten“-Funktion nur. Auch diese kommentiere ich für gewöhnlich aus (###TEMPLATE_EDIT###). Allerdings gibt es zwei Fehlermeldungen, die direkt per TypoScript definiert werden (siehe unten). Als letzter Schritt muss jetzt noch ein Extension-Template angelegt werden (entweder auf der Seite, wo die Newsletter-Anmeldung stehen soll, oder auf einer dieser Seite übergeordneten Seite – z.B. wenn die NewsletterAnmeldung von verschiedenen Seiten möglich sein soll). Folgende Einträge müssen im TypoScript-Template vorgenommen werden:

TypoScript: Constants

plugin.feadmin.dmailsubscription {
 pid = 10
 templateFile = fileadmin/templates/dmailsubscr.tmpl
}

(wobei die PID die ID des DirectMail-Sysordners ist und hier natürlich der Pfad eingefügt werden muss, in dem das Template liegt.) Wenn man es anpassen will, empfiehlt es sich, diese Datei in ein eigenen Verzeichnis zu kopieren, sonst ist die schöne Arbeit beim nächsten Extension-Update dahin.

TypoScript: Setup

plugin.feadmin.dmailsubscription {
 
email.fromName = NAME
templateFile = PFAD
create.defaultValues.module_sys_dmail_html = 1
create.preview = 0
table = tt_address
create.fields = hidden, name, first_name, last_name, email, module_sys_dmail_html, module_sys_dmail_category
create.required = email
create.overrideValues.disable = 1
create.overrideValues.module_sys_dmail_html = 1
edit.fields = hidden, first_name, name, last_name, email, module_sys_dmail_html, module_sys_dmail_category
edit.required = email
evalErrors.email.uniqueLocal = Sie sind bereits für unseren Newsletter eingetragen!
evalErrors.email.email = Diese Mailadresse ist ungültig! 
 
}

Jetzt sollte eigentlich alles funktionieren. Was mir noch nicht gefällt ist, dass die Mailadresse bei der Abmeldung nicht überprüft wird. Ach ja: Möchte man nur HTML-Mails verschicken, sollten auch alle Abonnenten nur HTML-Mails erhalten können. Das geht mit folgendem TypoScript:

TypoScript

plugin.feadmin.dmailsubscription {
  create.overrideValues.module_sys_dmail_html = 1
}

Damit stellt man sicher, dass jeder, der sich anmeldet, automatisch HTML-Mails bekommt. Sprich „Empfange HTML Mails“ ist angeklickt.

E-Mail-Newsletter und Datenschutz: Was tun?

Die Verwendung von DirectMail hat auf jeden Fall den Vorteil, dass man seine Daten selbst in der Hand hat und sie nicht z.B. an amerikanische Anbieter weitergibt. Weiterhin werden unsere DirectMail-Newsletter zumeist nicht von Gmail als Werbung erkannt, was den Vorteil hat, dass er tatsächlich auch gesehen wird.

Generell darf kein Newsletter ohne vorherige Einwilligung des Empfängers per E-Mail erfolgen. Diese ist mit DMail-Subscription und dem E-Mail-Bestätigungslink (Double-Opt-In) möglich. Das Problem besteht aber in der Nachweispflicht. Das Gericht verlangt vom Versender ein Protokollierung wer sich wann wie eingetragen, bestätigt und abgemeldet hat. Wir haben dafür ein Logging-Tool gebaut, dass diese Schritte im tt_address-Datensatz mit Zeit/Datum festhält. Bei Interesse können wir diesbezüglich weiterhelfen.

Mails automatisiert mit Cronjob & Scheduler versenden

Der automatisierte Versand des DirectMail-Newsetters erfolgt in den neueren DirectMail-Versionen über das TYPO3-Scheduler-Modul (auf Deutsch „Planer“). Damit der Scheduler überhaup funktioniert muss man zuerst einen neuen Backendbenutzer namens  _cli_lowlevel anlegen, der ansonsten keinerlei Berechtigungen erhält.

Dann geht man in das Scheduler-Modul und legt hier einen neuen Task an mit folgenden Eigenschaften an:

  • Typ: Wiederkehrend
  • Klasse: Direct Mail: Mailing Queue (direct_mail)
  • Häufigkeit z.B: 300

Jetzt weiß der TYPO3-Scheduler, dass er DirecMail-Mails versenden soll. Aber man muss den Scheduler an sich noch anstoßen. Dazu braucht man einen Server/Hoster, der Cronjobs erlaubt oder anbietet. Ein Cronjob ist ein zeitlich wiederkehrender Befehl zum Aufruf eines Scripts – das dann in unserem Falle den TYPO3-Scheduler Task anstößt, der dann wiederum den Mailversand lostritt.

Diese Bash-Shell-Script – nennen wir es t3-scheduler.sh – legt man am besten außerhalb des www- oder public_html-Orders, also z.B. unter Files ab. Unter TYPO3 6.2 (und bei Mittwald) erwartet das Script t3-scheduler.sh folgenden Inhalt:

Bash/Shell: t3-scheduler.sh

#!/bin/bash
/usr/local/bin/php_cli /html/typo3/typo3/cli_dispatch.phpsh scheduler

Diese Datei muss man dann noch ausführbar machen – z.B. über die Konsole mit

chmod +x t3-scheduler.sh

Jetzt kann man im Prinzip den Scheduler schon anstoßen und testen und zwar über die Eingabe von:

./t3-scheduler.sh

Aber will wollen das ja nicht immer per Hand machen, sondern dies Server über einen Cronjob erledigen lassen. Je nach Serverpower lassen wir den Cronjob auf den Pfad /files/t3-scheduler.sh alle 5 Minuten laufen und stellen Powermail so ein, dass es immer 50 Mails gleichzeitig verschickt.

Achtung: Ab der DirectMail-Version 3.X wurde der dmailerd.phpcron entfernt. Deswegen muss der TYPO3 Scheduler dafür genutzt werden.

Bounce-Handling: Die Empfängerliste sauber halten

Bounce-Handling dient dem Reinhalten der Datenbank. Wenn einem Empfänger keine Mail zugestellt werden kann, sollte dieser Eintrag richtigerweise auch aus der Datenbank entfernt werden. Mit Direct Mail ist dies über fetchmail möglich. Allerdings braucht man im Prinzip einen eigenen Server (Root- oder Cloud-Server), um diesen Service richtig zum laufen zu kriegen und zu konfigurieren (bei Mittwald war nach einem Telefonat mit dem Service das fetchmal auch auf einem Managed Server möglich. Bei Hetzner geht’s z. B. nicht.) Es gibt aber eine Erweiterung namens Returnmail analyse of direct_mail (wp_directmailreturn), die den fehlenden Service fetchmail kompensieren kann. Die Extension und das zugehörige Manual kann man hier im TYPO3-Repository finden.

Mailversand vereinfachen

TYPO3, direct_mail: Step 3 Mailversand entfernen Im Backend kann man auch den Versandprozess noch ein wenig vereinfachen. Mit foFlgendem User-TS-Config kann man beim Newsletterversand den Step 3 „Categories/Kategorien“ entfernen und die Auswahl am Anfang auf die benötigten Funktionen einschränken:

TypoScript

tx_directmail { hideSteps = cat hideTabs = ext, quick, dmail defaultTab = int }

FAQ, Häufige Probleme:

DMail Categories

Problem: Beim Mailversand kann man die Categories/Kategorien nach Versandgruppen/Empfängergruppen nicht speichern. Auch nach dem Updaten (Button: „Update category settings“ sind die Versand-Kategorien nicht ausgewählt.  Lösung: Bei den User-Rechten muss man für Page Content das Feld Category (module_sys_dmail_category) erlauben.

Direct Mail und TYPO 4.7

Problem: DirectMail geht nicht mehr mit TYPO3 4.7. Lösung: In TYPO3 4.7 hat sich einiges geändert. Deswegen auf DirectMail auf die 3er Version (Beachte Update-Hinweise!!) und Direct Mail Subscription auf 1.2. Bei den neuen Versionen muss man auch den Cronjob anpassen und unbedingt die Mailingfunktion (Swiftmailer) testen.

Fehlermeldung: … content could not be fetched

Eine mögliche Lösung: Prüft ob eure Seiten (also auch der Newsletter) .htaccess geschützt sind. Direct Mail benötigt dann in der Konfiguration den HTTP Usernamen und das Passwort. Sonst geht gar nix.

DirectMail_Subscription: Multiple SysFolders / Recursive

Problem: Es gibt mehrere/verschiedene SysOrdner für verschiedene Empfängergruppen (z.B:  1: Anmeldung von der Webseite , 2: Vereinsmitglieder), möchte aber trotzdem, dass diese sich über An- und Abmelden können. Lösung: Seit DirectMail_Subscription Version 1.2 kann man mehrere SysFolder angeben (kommasepariert):  plugin.feadmin.dmailsubscription.pid = 4262,4263. Damit funktioniert eine Abmeldung, wenn man direct den Empfänger-Account über cmd=…. aufruft auch mit mehreren SysFoldern. Allerdings wenn man aber auf den normalen Profil-Bearbeiten-Link des DMailSubcr-Formular klickt, dann kommt man nur an Empfänger im zuerst angegebenen SysFolder ran. Deshalb Lösung 2: Seit DirectMail_Subscription Version 1.2 kann man auch mehrere SysFolder rekursiv durchsuchen. Dazu muss man die Empfänger-Ordner-Struktur folgendermaßen aufbauen:

     |-- Anmeldung von der Webseite [PID 4262]
     |-- Import: Vereinsmitglieder [PID 4263]

Hier wäre dann nur anzugeben

TypoScript

plugin.feadmin.dmailsubscription.pid = 4262
plugin.feadmin.dmailsubscription.pidRecursive = 1

DirectMail Update Version 1.x auf 2.x

Zuerst muss man jetzt ein statisches TypoScript-Template einbinden. Dann mal checken, ob gender nicht als Pflichtfeld für die Create- und Edit-Actions gesetzt sind (Einfach mal im TypoScript-ObjectBrowser nach „gender“ suchen). Sonst kann man die Newsletteranmeldung nicht abschicken, bekommt aber auch im Frontend keine Fehlermeldung, wenn man das Gender-Feld nicht abfragt.

Weiterführende Links

Ähnliche Artikel:

Meta-Daten



83 Kommentare

Auch mal Kommentieren:

Kommentar