Jax Newsletter v2.1
Dokumentation

 

O. Allgemeine Informationen

Programm und Autor
Danksagungen

I. Einleitung

Was ist Jax Newsletter? - Wozu braucht man es?
Leistungsmerkmale (Features)
Systemvoraussetzungen
Lizenz

II. Installation

ohne MySQL-Unterstützung
mit MySQL-Unterstützung

III. Anwendung

Grundlegendes zur Funktionsweise der Skripte
An- und Abmeldevorgang
Anwendung / Einbindung des Skriptes
Manuelles Verwalten der Mailingliste
Versenden von Newslettern
Wichtige Hinweise zur Sicherheit

IV. Häufig gestellte Fragen (FAQs)

Wie kann ich die Farben und Schriftarten ändern?
Wie kann ich die Absenderadresse festlegen?
Wie kann man mehrere Mailinglisten gleichzeitig betreiben?
Wie kann ich zusätzliche Benutzerdaten erfassen?
Wie kann ich festlegen, welche zusätzlichen Benutzerdaten zwingend sind?
Wie kann ich die Länderfahnen ausschalten?
Wie ändert man die Datei-Zugriffsrechte auf dem Webserver?
Wie bekomme ich das Skript auf dem IIS zum laufen?
Wieviele Einträge kann Jax Newsletter speichern?
Wie kann ich mithelfen, dieses Projekt zu unterstützen?
Wo erhalte ich Informationen über Updates und Änderungen?

V. Bekannte Fehler und Probleme (Troubleshooting)

Probleme mit MySQL
Probleme mit Bestätigungslinks bei Lycos-Webspace
Probleme bei Verbindungsabbruch

VI. Liste der Änderungen (ChangeLog)

v2.1, v2.0, v1.9, v1.88, v1.5, v1.4

 

O. Allgemeine Informationen

 

Programm und Autor

Projekt:   Jax Newsletter (Online-Verwaltung von Mailinglisten)
     
Version:   2.1
     
Interpreter:      PHP 4.3+
     
Code:   Andreas John
     
Design:   Andreas John
     
Homepage:   www.jtr.de/scripting/php/newsletter/
     
Lizenz:  

Copyright (C) 2001-2004, Andreas John [ Jack (tR) ]

Dieses Programm ist Freeware im Sinne der "General Public License" Version 2 oder neuer! Den genauen Wortlaut dieser Lizenz finden Sie in der beiliegenden Datei gpl.txt, bzw. auf der Website der Free Software Foundation unter http://www.fsf.org/copyleft/gpl.html

Bitte beachten Sie, dass ich keinerlei Haftung für Schäden übernehme, die im Zusammenhang mit der Nutzung dieser Software auftreten...

 

Danksagungen

Ich möchte allen Leuten ein großes Dankeschön aussprechen, die dieses und viele andere Open Source Projekte durch ihre Hinweise, Übersetzungen, liebevollen Anpassungen und Links auf ihren Webseiten unterstützen...

Mein persönliches Dankeschön geht vor allem an:

Andrej  
Edward Brüheim http://www.bruheim.net
Giovanni Scopel  
Jan-Ruben van Schie http://www.jrwebdsign.nl
Hardy Hünteler  
[KB]BuzzDee http://www.buzzee.de.vu
Liesel Knorr  
Manfred Stumpf  
Martin Sondermann http://www.kunstphotografie.de
Michal Letko  
Mr Who http://www.mrwho.homeip.net
Pawel Wagner http://www.gry.skokinarciarskie.com
Richard Heyes http://www.phpguru.org
Roland Freimüller http://www.top-solution.at
Sabine Trautmann  
Susanne Müller http://www.netz-konzept.de
Tamas Herczeg http://www.soft-trans.hu
Thomas Bjørnseth http://www.bjornseth.net
Wojciech Dorosz http://www.serwisy.net
Wolfgang Liehr  
   
InteractiveTools.com (bzw. die Entwickler von HTMLarea)  

Wenn Sie dieses Skript verwenden, würden wir uns freuen, wenn Sie mithelfen, dieses Projekt zu unterstützen!

 

I. Einleitung

 

Was ist Jax Newsletter? - Wozu braucht man es?

Jax Newsletter ist ein Skript, mit dem Sie Mailinglisten online auf ihrer Website verwalten und e-mails (Newsletter) an diese Listen versenden können. (Mailinglist Manager).

Das Ein- und Austragen der Empfänger in diesen Mailinglisten erfolgt vollautomatisch, d.h. Besucher können sich über ein Formular auf der Website mit Ihrer e-mail-Adresse in die Mailinglisten ein, bzw. aus den Mailinglisten wieder austragen.

Eine Demoversion von Jax Newsletter finden Sie unter: http://www.jtr.de/scripting/php/newsletter/newsletter/index.php

 

Leistungsmerkmale (Features)

Jax Newsletter bietet Ihnen neben den typischen Funktionen eines WWW-Newslettersystems viele zusätzliche Leistungsmerkmale. Besonders hervorzuheben ist an dieser Stelle die flexible Unterstützung verschiedener Datenquellen, die es Ihnen ermöglicht, das Newslettersystem sowohl mit einfachen CSV-Textdateien als auch mit einem MySQL-Datenbanksystem zu betreiben.

Nachfolgend finden Sie eine Übersicht der wesentlichen Leistungsmerkmale von Jax Newsletter:

 

Systemvoraussetzungen

Jax Newsletter wurde in PHP 4 geschrieben, einer serverseitigen Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann! (Fragen Sie gegebenenfalls Ihren Web-Provider nach PHP-Unterstützung!)

Jax Newsletter ist in der Lage, die Empfänger-Adressen sowohl in einfachen Textdateien, als auch in einem MySQL-Datenbanksystem abzulegen, dadurch läuft es auch ohne MySQL-Datenbank-Anbindung!

 

Lizenz

Jax Newsletter und seine Einzel-Bestandteile unterliegen den Bedingungen der GPL - General Public License in der Version 2 oder neuer! Den genauen Wortlaut dieser Lizenz finden Sie in der beiliegenden Datei gpl.txt, bzw. auf der Website der Free Software Foundation unter http://www.fsf.org/copyleft/gpl.html

Diese Lizenz erlaubt es Ihnen vor allem, die Software frei weiterzugeben und natürlich weiterzuentwickeln. Desweiteren sind Sie hiermit verpflichtet, einen Copyrighthinweis, bzw. einen Link zum Originalskript (http://www.jtr.de/scripting/php/newsletter) beizubehalten!

Jax Newsletter enthält ausserdem die Module htmlArea, und HTMLMimeMail die einer BSD-ähnlichen Lizenz unterliegen, die sie evtl. gesondert berücksichtigen müssen.

 

II. Installation

 

Installation ohne MySQL-Unterstützung

Jax Newsletter wurde in PHP 4 geschrieben, einer serverseitigen Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann! (Fragen Sie gegebenenfalls Ihren Web-Provider nach PHP-Unterstützung!)

Jax Newsletter ist in der Lage, die Daten sowohl in einfachen CSV-Textdateien, als auch in einem MySQL-Datenbanksystem abzulegen, das bedeutet, es läuft auch ohne MySQL-Datenbank-Anbindung!


Verfügen Sie für Ihre Website bereits über PHP-Unterstützung, dann tun Sie bitte folgendes:

  1. Laden Sie sich die aktuellste Version von Jax Newsletter herunter http:/www.jtr.de/scripting/php/newsletter/ !

  2. Entpacken Sie das .zip-Archiv! (Achten Sie darauf, dass alle Unterverzeichnisstrukturen mit entpackt werden)

  3. Öffnen Sie die Datei newsletter.settings.inc.php (im Verzeichnis newsletter/settings) mit einem Texteditor und passen Sie die Variablen Ihren Bedürfnissen an! (wie weiter unten beschrieben)

    Sie können diese Einstellungen auch später über das beiliegende Verwaltungsprogramm auf Ihrer Website durchführen. Das Admin-Programm starten Sie über die Datei index.php die sich standardmäßig im Verzeichnis admin (relativ zum Pfad Ihres Newsletterskripts) befindet.

    Wenn Sie Jax Newsletter also beispielsweise im Hauptverzeichnis Ihrer Website unterbringen (/) finden Sie das Verwaltungsprogramm unter

    http://www.ihredomain.de/newsletter/admin/index.php

  4. Laden Sie alle Verzeichnisse und Dateien von Jax Newsletter auf Ihre Website!

    Nachdem Sie das Skript auf Ihren Webspace hochgeladen haben, stellen Sie bitte mit Ihrem FTP-Client die Zugriffsrechte für die .csv-Dateien (standardmäßig alle Dateien im Verzeichnis "mailinglists") so ein, dass das Skript vollen Schreibzugriff darauf hat! Sonst meldet Ihnen das Skript beim Start einen Fehler á la "[function.fopen]: failed to open stream:..."

    Wichtig: Geben Sie Jax Newsletter auch Schreibrechte für die folgenden Verzeichnisse:
    /mailinglists
    /archive
    /
    admin/mailqueue
    /logs

  5. Wenn Sie alle Dateien hochgeladen haben, und die Zugriffsrechte korrekt gesetzt haben, können Sie das Skript auf Ihrer Website verlinken. z.b.

    http://www.ihredomain.tld/newsletter/index.php?ml_id=1&language=French
    Der Parameter ml_id sagt dem Skript, welche Mailingliste es verwenden soll (siehe FAQ) Der Parameter language ... gibt dem Skript explizit vor, welche Sprache verwendet werden soll. (Für diese muss natürlich eine entsprechende Sprachvorlagedatei im Verzeichnis languages existieren, ansonsten wird automatisch die Sprache gewählt, die in newsletter.settings.inc.php als $default_language eingestellt wurde!)

  6. Wichtiger Hinweis zur Sicherheit:


Installation mit MySQL-Unterstützung

Jax Newsletter wurde so entworfen, dass es sowohl einfache Textdateien, als auch MySQL-Datenbanktabellen zur Speicherung der Einträge verwenden kann. Der Betrieb mit einem MySQL-Datenbanksystem ist bei großen Mailinglisten mit mehreren tausend Einträgen in der Regel schneller als die CSV-Variante...

Verfügen Sie über MySQL-Unterstützung dann tun Sie bitte folgendes:

  1. Installieren Sie Jax Newsletter (wie bei "Installation ohne MySQL")...

  2. Führen Sie das Administrationsprogramm auf der Website aus!
    Das Programm finden Sie im Verzeichnis admin (relativ zum Pfad Ihres Newsletterskriptes).

  3. Setzen Sie unter [Grundeinstellungen/Ändern] bzw. in der Datei newsletter.settings.inc.php die Datenquelle auf "mysql" und tragen Sie die Zugriffsdaten (Server, Datenbankname, Benutzerkennung und Passwort) für Ihren MySQL-Server ein ! z.B:

    $data_source = "mysql"
    $db_server = "mysqlserver2.mydomain.tld";
    $db_login = "user152";
    $db_database = "my_db";
    $db_password = "hummel";

  4. Starten Sie phpMyAdmin (oder ein Monitorprogramm für Ihren MySQL-Server) und legen Sie die folgenden Tabellenstrukturen an (Alternativ können Sie auch den SQL-Dump aus manuals/jax_newsletter.sql benutzen):

    CREATE TABLE jnl_groups (
    id int(11) NOT NULL auto_increment,
    ml_id varchar(10) NOT NULL default '',
    title varchar(128) NOT NULL default '',
    grp_name varchar(128) NOT NULL default '',
    subscribers int(11) NOT NULL default '0',
    languages varchar(255) NOT NULL default '',
    css varchar(128) NOT NULL default '',
    archive varchar(128) NOT NULL default '',
    sign_in_page varchar(128) NOT NULL default '',
    sign_out_page varchar(128) NOT NULL default '',
    validation_page varchar(128) NOT NULL default '',
    senders varchar(128) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    CREATE TABLE jnl_queue (
    id int(11) NOT NULL auto_increment,
    start_time int(16) NOT NULL default '0',
    xid VARCHAR(32) NOT NULL default '0',
    groups varchar(255) NOT NULL default '', archive_entry int(1) NOT NULL default '0',
    mail_subject varchar(128) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    CREATE TABLE jnl_recipients (
    id int(11) NOT NULL auto_increment,
    email varchar(128) NOT NULL default '',
    hash varchar(32) NOT NULL default '',
    mail_format char(1) NOT NULL default '',
    gender char(1) NOT NULL default '',
    nick varchar(64) NOT NULL default '',
    mode varchar(4) NOT NULL default '',
    groups varchar(255) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    CREATE TABLE jnl_records (
    id int(11) NOT NULL auto_increment,
    action varchar(4) NOT NULL default '',
    time varchar(32) NOT NULL default '',
    ip varchar(10) NOT NULL default '',
    email varchar(255) NOT NULL default '',
    hash varchar(32) NOT NULL default '',
    mail_format char(1) NOT NULL default '',
    gender char(1) NOT NULL default '',
    nick varchar(64) NOT NULL default '',
    mode varchar(4) NOT NULL default '',
    groups varchar(255) NOT NULL default '',
    age varchar(4) NOT NULL default '',
    profession varchar(64) NOT NULL default '',
    nationality varchar(32) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    CREATE TABLE jnl_subscribers (
    id int(11) NOT NULL auto_increment,
    date varchar(16) NOT NULL default '',
    email varchar(128) NOT NULL default '',
    hash varchar(32) NOT NULL default '',
    mail_format char(1) NOT NULL default '',
    gender char(1) NOT NULL default '',
    nick varchar(64) NOT NULL default '',
    groups varchar(255) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

    CREATE TABLE jnl_archive_eng (
    id int(11) NOT NULL auto_increment,
    timestamp int(16) NOT NULL default '0',
    xid varchar(16) NOT NULL default '',
    mail_subject varchar(255) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;
    CREATE TABLE jnl_archive_ger (
    id int(11) NOT NULL auto_increment,
    timestamp int(16) NOT NULL default '0',
    xid varchar(16) NOT NULL default '',
    mail_subject varchar(255) NOT NULL default '',
    PRIMARY KEY (id)
    ) TYPE=MyISAM

    *Die Tabellennamen müssen die gleichen sein, die in der Datei globals.inc.php festgelegt sind...

  5. Ganz wichtig:
    Die Tabelle groups muss unbedingt mit mindestens einem Eintrag gefüttert werden, da sonst das Skript nicht funktioniert. Am besten Sie verwenden den folgenden Beispieleintrag, und passen die Daten an Ihre Bedürfnisse an:

    INSERT INTO jnl_groups VALUES (1, '00', 'Jax Newsletter', 'German', 1, 'de', 'default.css', 'jnl_archive_ger', 'sign_in.php', 'sign_out.php', 'validate.php', 'postmaster@%!this_domain!%');


  6. Wichtiger Hinweis zur Sicherheit:

 

III. Anwendung

 

Grundlegendes zur Funktionsweise der Skripte

Jax Newsletter besteht aus vier Teilen:

1. Skripte zum Automatischen An- und Abmelden der Empfänger:

Die Skripte index.php, sign_in.php, sign_out.php und validate.php sind (nur) Beispieldateien für die Einbindung der Anmeldeskripten. Sie binden die entsprechenden .inc.php-Module aus dem Verzeichnis forms ein..

Alle Skripte von Jax Newsletter (inklusive der Admin-Skripte) gehorchen dem folgenden Aufrufschema:

http://..../index.php?ml_id=01&language=English

ml_id
gibt die voreingestellte Empfängergruppe an! Die Aktionen im Admin-System und in den Formularen beziehen sich dann immer auf diese Empfängergruppe. Für jeden verwendeten Schlüssel ml_id müssen Sie vorher mit dem Admin-Programm in der Gruppenlisten-Datei mailinglists/jnl_groups eine entsprechende Gruppe angelegt haben. ml_id kann alle alphanumerischen Werte (also auch Buchstabenkombinationen) annehmen.

language
gibt die Sprache an, in der die Meldungen des Newsletters angezeigt werden sollen. Wichtig ist, dass für die in der URL angegebene Sprache auch eine entsprechende Sprachvorlage im Verzeichnis languages existiert! Andernfalls wird die Sprache gewählt, die in newsletter.settings.inc.php festgelegt wurde.

2. Hilfsskripte für die Anzeige archivierter News

Zusätzlich zu den Skripten des Anmelde-/Abmeldesystems gibt es noch ein Archiv-Skript archive.php, das eine Liste aller gesendeten Newsletter anzeigt. Dieses Skript ist ebenfalls eine Beispieldatei für die Einbindung des modules/archive.inc.php


3. Administrationsskripte

Dieser Block umfasst alle Administrationsskripte, die sich hinter dem Skript admin/index.php verbergen, ausgenommen das Skript mailservice.php.

navigation.php dient als Verwaltungsmenü der einzelnen Administrationsfunktionen (erfodert JavaScript!!!)
list.admin.php
dient zum Anzeigen und Löschen der Einträge in den Mailinglisten. groups.admin.php dient zum Anlegen, Ändern und Löschen von Mailinglisten.
posting.php
ist das eigentliche Sende-Formularl des Newslettersystems.
archive.admin.php
bietet Funktionen zum Löschen der Archiv-Einträge.
admin.php
dient als Hilfe zur Änderung der Einträge in newsletter.settings.inc.php..


4. Skripte für den e-mail-Versand

Das Skript mailservice.php dient zum zeitgesteuerten Versenden von e-mails. Es nimmt die e-mails vom Sendeformular posting.php entgegen, reiht sie in eine Warteschlange, und schickt sie zum gewünschten, bzw. nächstmöglichen Zeitpunkt ab.

 

An- und Abmeldevorgang

Trägt sich ein Besucher in eine Mailingliste ein oder aus, werden die eingegebenen Daten in einer Protokolldatei (standardmäßig bei beiden Mailinglisten in der Datei jnl_records) gespeichert. Ausserdem wird ein "pseudo-zufällig" generierter Schlüssel zusammen mit der e-mail-Adresse in der Datei /mailinglists/jnl_subscribers gespeichert.

Um sicherzustellen, dass niemand unerwünscht die e-mail-Adresse eines anderen in die Liste ein- bzw. aus der Liste austrägt, bekommt der "Eigentümer" der e-mail-Adresse nach der Anmeldung durch das Skript sign_in.php eine e-mail zugeschickt. Diese e-mail enthält einen Hyperlink auf das Skript validate.php, den der Empfänger anklicken muß, um sich entgültig in die entsprechende Mailingliste ein- oder auszutragen.

Beispiel:

http://.../newsletter/validate.php?ml_id=0&do=sign&uid=3et60c4i45....

do
gibt an, ob sich der Benutzer ein oder austrägt.

uid
enthält den von sign.php erzeugten Schlüssel, den validate.php jetzt mit den Schlüsseln in der Datei jnl_subscribers vergleicht. Ist der Vergleich erfolgreich, wird der entsprechende Eintrag in der Datei jnl_subscribers gelöscht und die e-mail-Adresse in die Mailingliste jnl_recipients übernommen, bzw. gelöscht...

 

Anwendung / Einbindung des Skriptes

Die Skripte können wie oben beschrieben verlinkt werden. Sie können Ihre eigenen Eintrage-/Austrageformulare verwenden, müssen jedoch darauf achten, dass es mindestens das Pflichtfeld "email" gibt. Das Programm index.php dient übrigens nur zu Demonstrationszwecken und zeigt Ihnen, wie Sie ein kombiniertes Anmelde-/Abmeldeformular auf Ihrer Website integrieren können. Nach dem Eintragen der e-mail-Adresse wird der Benutzer zu den einzelnen, detailierteren Formularen sign_in.php und sign_out.php geführt.

 

Manuelles Verwalten der Mailingliste

Zur Verwaltung Ihrer Mailinglisten stehen Ihnen eine Reihe von Administrationsskripten zur Verfügung, die Sie über das Programm index.php im Verzeichnis admin aufrufen können. Bitte denken Sie daran, dieses Verzeichnis gegen den Zugriff unbefugter abzusichern! Die Sprache des Administrationssystems können Sie wie gewohnt über den Parameter language beeinflussen:

http://.../admin/index.php?language=English

 

Versenden von Newslettern

Um eine Nachricht an eine Mailingliste zu schicken, rufen Sie das Skript admin/posting.php (am einfachsten zu erreichen über das Administrationssystem unter den Links in der Sektion Posting) auf. Wählen Sie die Empfängergruppen aus, Geben Sie die Nachricht ein und drücken Sie dann auf Senden.

Wichtig:
Damit das Skript alle Nachrichten verschicken kann, muß die Browserverbindung "offen" gehalten werden. Sie dürfen also das Browserfenster erst schließen, wenn Sie eine Bestätigung erhalten, dass alle e-mails erfolgreich verschickt wurden! Falls Ihnen die Verbindung dennoch versehentlich einmal abbricht, wird die Sendung in der Mailwarteschlange gehalten und Sie können den Sendevorgang an der Stelle des Abbruchs wieder aufnehmen.

 

 

Wichtige Hinweise zur Sicherheit:

Jax Newsletter besitzt keinen eigenen Passwort-Schutz! Stellen Sie also bitte über das Konfigurationssystem Ihres Websspace sicher, dass niemand ausser Ihnen Zugriff auf das Administrationsverzeichnis (admin) hat!

Falls Sie Jax Newsletter im CSV-Modus benutzen, sollten Sie die automatische Verzeichnisanzeige (Directory-Index) abschalten, und Ihre .csv-Dateien umbenennen damit Benutzer nicht in ihre Mailinglisten und Protokolldateien schauen können! Dieses Problem stellt sich nicht, wenn Sie das Skript mit MySQL verwenden!

 

 

IV. Häufig gestellte Fragen (FAQs)

 

Wie kann man die Farben und Schriftarten anpassen?

Dafür stehen im Verzeichnis css verschiedene vordefinierte Stylesheets zur Verfügung, die man nach Belieben mit einem Texteditor verändern kann.

 

Wie kann ich die Absenderadresse festlegen?

Die Absenderadresse wird standardmäßig auf postmaster@ihredomain.tld voreingestellt. Wenn Sie die Adresse per Hand ändern wollen dann müssen Sie in der Datei newsletter.settings.inc.php die Variable

$newsletter_admin_email = "postmaster@".$SERVER_NAME;

auf Ihre Adresse anpassen, in meinem Fall wäre das z.B:

$newsletter_admin_email = "jack@jtr.de";

Zusätzlich besteht die Möglichkeit im Gruppen-Administrationssystem [Mailinglisten/Übersicht], für jede Mailingliste eine eigene Absenderadresse festzulegen.

 

Wie kann man mehrere Mailinglisten gleichzeitig betreiben?

Die Datenstruktur für Jax Newsletter wurde für Version 2.0 komplett überarbeitet, und bietet jetzt eine direkte Unterstützung mehrerer Mailinglisten. (Empfängergruppen)

Legen Sie einfach mit dem Newsletter-Administrationsprogramm unter "Mailinglisten/Anlegen" eine neue Mailingliste an. Falls Sie für Ihre Website eigene Anmeldeskripte auf Basis der Dateien im /forms-Verzeichnis angelegt haben, denken Sie bitte daran, die Namen Ihrer Skripte beim Anlegen der Mailinglisten im Administrationssystem unter "Anmeldeseite", "Abmeldeseite" und "Bestätigungsseite" einzutragen.

 

Wie kann ich zusätzliche Benutzerdaten erfassen?

Jax Newsletter speichert standardmässig neben der e-mail-Adresse und der IP-Adresse den Inhalt Formular-Felder profession (Beruf), age (Alter) und nationality (Nationalität) die über das Formular sign_in.php übergeben werden.

Wenn Sie z.B. zusätzlich noch den Geburtstag der Katze des Abonennten ;-) aufnehmen möchten, ändern Sie im Skript validation.inc.php folgende Zeilen:


if ( $log_signings )
{
$log = array();
$log[ "action" ] = "+";
$log[ "time" ] = $time_now;
$log[ "ip" ] = $REMOTE_ADDR;
$log[ "email" ] = $email;
$log[ "profession" ] = $profession;
$log[ "age" ] = $age;
$log[ "nationality" ] = $nationality;

$log[ "kitties_birthday" ] = $kitties_birthday;

$logbook->append( $log );
}

Danach müssen Sie entweder die .CSV-Datei für die Protokolllierung (standardmäßig logs/jnl_records) löschen (dann wird beim nächsten Aufruf des Skripts automatisch ein neuer Tabellenkopf angelegt, oder die erste Zeile der Datei um den Variablennamen erweitern:


"action","time","ip","email","profession","age","nationality","kitties_birthday"
"+","2002-03-03 21:14:47","127.0.0.1","jack@jtr.de","Webmaster","1978","Deutsch"

Verwenden Sie eine MySQL-Datenbank als Datenquelle, so müssen Sie die Tabelle für die logs erweitern:

ALTER TABLE `jnl_records` ADD `kitties_birthday` VARCHAR(30) NOT NULL;

 

Wichtiger Hinweis:
Bitte beachten Sie bei der Aufnahme zusätzlicher Daten unbedingt den Grundsatz der Datensparsamkeit (im Sinne der Deutschen Datenschutzgesetze).

Unzulässig (und evtl. Grund zur einer kostspieligen Abmahnung gegen Sie) ist in diesem Sinne die Aufnahme aller Daten, die zum ordnungsgemäßen Betrieb der Mailingliste nicht zwingend erforderlich sind, und über die Rückschlüsse auf die Person möglich sind. (z.B. Konfession, Sexualität, Gesundheitszustand usw...)

Statistische Daten (wie z.B. Interessensgebiete, Berufsgruppe etc.) sind dagegen evtl. für die Gestaltung eines Newsletters nützlich, ohne die Privatsphäre des Empfängers zu gefährden. Um rechtlichem Ärger von vornherein aus dem Wege zu gehen, sollten Sie lieber zurückhaltend über die Notwendigkeiten entscheiden...

 

Wie kann ich festlegen, welche zusätzlichen Benutzerdaten zwingend sind?

Dazu finden Sie im Admin-Programm unter [Grundeinstellungen/Ändern] am Ende des Formulars ein paar Kontrollschalter, mit denen Sie festlegen können, welche Daten im Sign-in-Formular aufgenommen werden sollen, und ob diese zwingend sein sollen. Sind die Datenfelder als zwingend markiert, muss der Benutzer Werte in diese Felder eingeben, um sich zu registrieren.

 

Wie kann ich die Länderfahnen ausschalten?

Normalerweise zeigt Jax Newsletter im Anmeldeformular neben dem Namen jeder verfügbaren Mailingliste die Länderfahnen für die verfügbaren Sprachen an.

Auf speziellen Wunsch hin, habe ich die Anzeige der Sprachen durch Länderflaggen optional gestaltet. Wenn Sie die Länderfahnen unterdrücken wollen (z.B. weil Sie nur eine Liste haben, und Ihnen das Deutschlandsymbol dahinter zu "extrem-nationalistisch" erscheint! ;-) setzen Sie bitte manuell in der newsletter.settings.inc.php die Variable

$show_national_flags = false;

 

 

Wie ändert man die Datei-Zugriffsrechte auf dem Webserver?

Wenn Ihr Webserver unter Unix arbeitet (Apache) müssen Sie den Unix-Befehl chmod zum Ändern der Dateirechte verwenden. (Wie Sie das bequem von Ihrem FTP-Client aus machen können, ist weiter unten beschrieben)

Die Syntax von chmod lautet:

chmod rwxrwxrwx filename

r = lesen
w = schreiben
x = ausführen

Der Befehl erwartet drei 3er-Tupel welche die Zugriffsrechte für die "Gruppen" angeben: [rwx][rwx][rwx]

Die Gruppen von rechts nach links:

Alle Benutzer
Alle Benutzer der gleichen Gruppe wie Besitzer
Nur der Besitzer

Die Tupel kann man sich auch in Binärdarstellung vorstellen:

chmod [rwx][rwx][rwx]

wäre äquivalent mit

chmod [111][111][111]

bzw. in dezimalschreibweise mit

chmod [7][7][7]

und da haben wir auch schon den fertigen chmod Befehl um "allen" Zugriff auf die Dateien zu geben:

chmod 777 jnl_recipients

(Die benötigten Dateirechte hängen von der Webserver-Konfiguration ab. Wenn Sie misstrauisch sind, und dem Skript nicht die vollen Rechte (777) geben wollen, erhöhen Sie die Rechte langsam, bis das Skript fehlerfrei läuft!)

Die meisten FTP-Clients, wie z.B. WS-FTP unterstüzen den chmod-Befehl bequem von der Oberfläche aus. Man muss bei WS-FTP z.B. nur mit der rechten Maustaste auf eine Datei im Ftp-Fenster klicken, dann auf chmod, dann die zu setzenden Attribute usw...

 

Wie bekomme ich das Skript auf dem IIS zum laufen?

Eine kurze Beschreibung von Manfred Stumpf finden Sie hier: http://www.jtr.de/scripting/php/howtos/phpmail_on_iis.html

 

Wie viele Einträge kann Jax Newsletter speichern?

Zur Zeit teste ich das Skript auf einer meiner Websiten mit ca. 5100 Empfängern im CSV-Format. Theoretisch müsste das Skript in Abhängigkeit von der verfügbaren Rechenzeit/-leistung ihres Webservers und der Datenquelle problemlos mehrere 1000 Einträge verwalten können. Für größere Newsletter bietet sich auf jeden Fall die Verwendung von MySQL als Datenquelle an...

 

Wie kann ich mithelfen, dieses Projekt zu unterstützen?

 

Wo erhalte ich Informationen über Updates und Änderungen?

  1. Auf der Website (http://www.jtr.de/scripting/php/newsletter) natürlich! ;-)

  2. Im Admin-Skript gibt es einen Link "Nach Updates suchen". Links neben dem Link ist ein kleiner grüner Punkt. Blinkt dieser grün-gelb, gibt es ein neues Update. Blinkt dieser rot-gelb, gibt es ein sicherheitsrelevantes Update, dessen Installation wichtig ist!

  3. Tragen Sie sich in den "JtR News"-Newsletter ein! (http://www.jtr.de/scripting/php/newsletter/newsletter)

  4. Nutzen Sie das Forum für Jax Newsletter:
    unter http://boards.jtr.de habe ich ein kleines deutschsprachiges phpBB-Forum aufgesetzt, in dem Sie Fragen oder Erkenntnisse mit andern Anwendern teilen können.

 

 

V. Bekannte Fehler und Probleme

 

Probleme mit MySQL

Jax Newsletter speichert nur einen Eintrag, bzw. zeigt immer den gleichen Eintrag an!

Sie haben wahrscheinlich nicht die Beispieltabellen (im manuals-Verzeichnis) verwendet, oder vergessen das Feld "id" (Pflichtfeld!!) anzulegen

 

Probleme mit Bestätigungslinks bei Lycos-Webspace

Ich benutze Lycos als Provider. Wenn sich Benutzer in den Newsletter eintragen, bekommen Sie die Aktivierungs-e-mail erfolgreich zugestellt. Der Link in dieser Mail führt jedoch auf eine ungültige Seite...Was kann ich dagegen tun?

Auf dem Lycos-Webspace wird seltsamerweise die PHP-Variable $SCRIPT_NAME nicht korrekt gesetzt. In diesem Fall ändern Sie am besten die entsprechende Zeile (377 ?) in der Datei validation.inc.php von

$script_url = "http://" . $SERVER_NAME . implode("/",$script_path_dummy ) . '/' ;

auf die korrekte URL:

$script_url = "http://members.lycos.de/fuzzy/newsletter/";

 

Probleme bei Verbindungsabbruch

Wenn der Datenstrom zum Browser während des Sendens unterbrochen wird (z.B. wegen eines Proxy-Timeouts), kann es vorkommen , dass nicht alle Empfänger die Nachricht erhalten. Ausserdem kann es bei größeren Mailinglisten zu starker Zeitverzögerung kommen.

Im Moment habe ich noch keine echte Lösung für das Problem, aber (seit v1.4) kann sich das Skript den letzten Empfänger vor dem TimeOut zu merken, so dass Sie das Senden später an dieser Stelle fortsetzen können.

 

VI. Liste der Änderungen (Change Log)

 

Änderungen in Version 2.1:

Änderungen in Version 2.0:

Änderungen in Version 1.9:

Änderungen in Version 1.88:

Änderungen in Version 1.5:

Änderungen in Version 1.4:

...

 


Sollten Sie Fehler finden, oder haben Sie Fragen oder Verbesserungsvorschläge, zögern Sie bitte nicht, und wenden Sie sich einfach direkt an mich!

RTFM !!! :
Leider habe ich keine Zeit kostenlosen Installationssupport für dieses Programm zu leisten! Wenn Sie ein Problem haben dessen Lösung durch diese Dokumentation beschrieben oder ausreichend angedeutet wird, sehe ich mich aus Zeitgründen gezwungen, Ihre e-mail-Anfrage komplett zu ignorieren...

Bitte sparen Sie mir und sich die Zeit und lesen Sie sich vor dem Kontakt unbedingt die Dokumentation vollständig durch! Hinweise auf fehlende Erklärungen in dieser Dokumentation nehme ich jedoch gern entgegen...


Berlin, 13.03.2004 - Jack (tR)