Geschrieben von lagerhaus am 03.10.2005, 21:49

Newsletter verschicken

Dieses Tutorial soll zeigen, wie man einen Newsletter versenden kann.
Dies kann zur Verwendung kommen, wenn zum Beispiel eine Community mit einer wichtigen Information versorgt werden soll.

Ich gehe davon aus, dass die E-Mail-Adressen bereits in einer Datenbank zur Verfügung stehen.

Dann muss es natürlich zunächst ein Formular geben, in das die Nachricht eingegeben werden kann.
Diese Datei nenne ich "newsletter.php".
Eventuell sollte darüber nachgedacht werden, ob man vielleicht eine Sicherung einbaut, sodass nicht jeder einen Newsletter verschicken kann. Dies müsste mit PHP geschehen. In dieses Skript habe ich eine einfache Passwortabfrage eingebaut, dabei gibt es nur ein Passwort und keine benutzerspezifischen Kennwörter.


<html><head>
<title>Newsletter verschicken</title>
</head>
<body>

<?php
$pass = $HTTP_POST_VARS['pass'];
// Hier wird geprüft, ob die POST_Variable gesetzt ist. Diese wird durch das Formular auf dieser Seite übermittelt.

if(!$pass){
//Wenn kein Passwort eingegeben wurde, muss zunächst die Passwort-Abfrage durchlaufen werden.

echo '<FORM Name="PassForm" ACTION="newsletter.php" METHOD=POST>';
echo '<INPUT TYPE="text" NAME="pass" VALUE="" SIZE="30"><br>';
echo '</form>';
die ("");

// Das Formular, wo das Passwort eingegeben werden muss.
}

if($pass == "tutorialpasswort"){
// Wenn das Passwort gleich dem richtigen Kennwort ist, dann wird das Newsletter-Formular gezeigt.

echo '<FORM Name="Form" ACTION="sendletter.php" METHOD=POST>';
echo '<INPUT TYPE="subject" NAME="subject" SIZE="50"><br>';
echo "<TEXTAREA NAME="text" ROWS=30 COLS=100 WRAP=virtual>Text des Newsletters</TEXTAREA>";
echo '</form>';

// Der Text und der Betreff wird an die Datei sendletter.php übermittelt.
}

else{

echo "Falsches Passwort!";
echo '<a href="newsletter.php">Zur Passworteingabe</a>';

//Sonst wird es nicht gestattet, die Formularseite zu betreten.
}

?>

</body>
</html>

Wenn das Passwort richtig war, wird das Formular zur Eingabe des Textes, der verschickt werden soll angezeigt.
Die Eingabe in dieses Textfeld wird übermittelt an die Datei "sendletter.php".

Die E-Mail-Adressen, an die die Mails verschickt werden sollen, lese ich aus einer MySQL-Datenbank aus. Die Tabelle nenne ich "table", die Spalte "email".

Hier nun der Code.

<?php

$email = "newsletter@diedomain.de";
//Hier muss die Adresse eingegeben werden, von der die Mails verschickt werden.

$text = $HTTP_POST_VARS["text"];
$subject = $HTTP_POST_VARS["subject"];

if(!$text){
die ("Leider wurde kein Text eingegeben!");
}

if(!$subject){
die ("Leider wurde kein Betreff eingegeben!");
}

//Es müssen beide Felder ausgefüllt sein, sonst wird das Skript abgebrochen.

$headers = "From:" . $email;

$array_1 = array("<br />");
$array_2 = array("");
$text = str_replace($array_1,$array_2,$text);
//Absätze sollen dargestellt werden, aber nicht <.br.>

$mailtext = "\n +++ Dies ist der Newsletter von lima-city.de +++

--------------------

$text

--------------------

\n +++ Dies ist der Newsletter von lima-city.de +++";

//Hier kann der Text eingegeben werden, wie die Mail insgesamt aussehen soll.

//Verbindung zur Datenbank aufbauen:

$linkID = mysql_connect("Serveradresse", "Benutzername", "Passwort");
if (!$linkID) die("Keine Verbindung zur Datenbank!");

$resID = mysql_select_db("Datenbankname");
if (!$resID) die("Fehler!");

$result = mysql_query("SELECT email from table");
//Auslesen der E-Mail-Adressen

while ($row = mysql_fetch_array($result))
{
$mail= $row[0];
$mailcontrol = mail($mail, $subject, $mailtext, $headers);
// Jeweils eine Mail an jede E-Mail-Adresse
}

if ($mailcontrol){
echo "Der Newsletter wurde erfolgreich verschickt!";
}

else{
echo "Leider hat das Verschicken der Mails nicht geklappt :-( ";

?>

Bei Fragen kann gerne eine PN geschickt werden.

Viel Spaß beim Benutzen,

MfG lagerhaus

Bewertung Anzahl
6
44,4 %
4 Bewertungen
5
33,3 %
3 Bewertungen
4
11,1 %
1 Bewertungen
3
11,1 %
1 Bewertungen