Mehrmals Mail senden

In diesem Tutorial zeige ich wie du mit einfachsten Mitteln ein PHP-Skript schreibst, in dem du festlegen kannst, wie oft, mit welchem Absender, welchem Empfänger, welchem Betreff und welchem Text eine Nachricht gesendet wird.

Viele wissen ja bereits, wie die Mail-Funktion arbeitet. Wenn nicht, gegebenenfalls in eines unserer Tutorials schauen :)

Zuerst legen wir mal mit dem HTML-Teil los (und ein bisschen PHP):

<?php
if (!isset($id)) {
?>
<form method="POST" action="">
Wie oft: <input type="text" name="anzahl" size="20" /><br />
Von wem: <input type="text" name="sender" size="20" /><br />
An wen: <input type="text" name="empfaenger" size="20" /><br />
Betreff: <input type="text" name="betreff" size="20" /><br />
Text: <textarea rows="5" name="text" cols="20"></textarea><br />
<input type="submit" name="send" value="Send" />
<input type="hidden" name="id" value="blaaa" />
<input type="reset" name="reset" value="Reset" />
</form>
<?
}

Hier wird $id als Hilfsvariabel benutzt. Da diese am Anfang nicht gesetzt ist, wird der HTML-Quelltext angezeigt. Deshalb gibt es auch ein unsichtbares Feld. Dieses trägt den Namen „id“. Würde ich nun auf „Senden“ klicken, dann würde das, was ich als nächstes erkläre angezeigt werden:

	else {
for ($i=0; $i<$anzahl; $i++) {
$sendermail = $sender;
$extra = "From: $sender <$sendermail>\r\n";
$extra .= "Content-Type: text/html\r\n";
$extra .= "Content-Transfer-Encoding: 8bit";
mail($empfaenger, $betreff, $text, $extra);
echo "Mail $i gesendet an $empfaenger!<br />";
}
}
?>

Am Anfang beginnt eine For-Schleife. Es wird die Variabel $i gleich 0 gesetzt ($i = 0;). Danach wird die zweite Bedingung für die Schleife formuliert ($i<$anzahl). Diese bestimmt, dass die Schleife solange ausgeführt wird, solange der Wert von $i niedriger ist als die angegebene Anzahl der zu versendenden Mails. Bei jedem Schleifen-Durchlauf wird $i um eins erhöht, das bestimmt die letzte Bedingung ($i++).

$sendermail = $sender heißt, dass die Absender-E-Mail als Absender-E-Mail-Adresse und als Absender-E-Mail-Name angezeigt wird.

In der $extra wird der E-Mail-Kopf eingefügt. Der Teil mit „Content-Type: ...“ bedeutet, dass die Mail als HTML-Datei versendet wird. Also könntet ihr auch irgendwelche HTML Sachen einbauen (HTML-Tags).

mail($empfaenger, $betreff, $text, $extra);

Hier wird die E-Mail versendet. Der erste Parameter ist der Empfänger, der zweite der Betreff, der dritte die eingegebene Nachricht und $extra ist der String von vorhin (reimt sich :P).

echo "Mail $i gesendet an $empfaenger!\r\n";

Nun wird noch angezeigt, dass die Mails erfolgreich abgesendet wurden (würde man als Anzahl 50 schreiben dann würde hier 50 mal dieser Satz stehen).

Fertig. Hier nochmal das ganze Skript:

<?php
if (!isset($_GET['id'])) {
?>
<form method="POST" action="">
Wie oft: <input type="text" name="anzahl" size="20" /><br />
Von wem: <input type="text" name="sender" size="20" /><br />
An wen: <input type="text" name="empfaenger" size="20" /><br />
Betreff: <input type="text" name="betreff" size="20" /><br />
Text: <textarea rows="5" name="text" cols="20"></textarea><br />
<input type="submit" name="send" value="Send" />
<input type="hidden" name="id" value="blaaa" />
<input type="reset" name="reset" value="Reset" />
</form>
<?php
} else {
for ($i=0; $i<$anzahl; $i++) {
$sendermail = $sender;
$extra = "From: $sender <$sendermail>\r\n";
$extra .= "Content-Type: text/html\r\n";
$extra .= "Content-Transfer-Encoding: 8bit";
mail($empfaenger, $betreff, $text, $extra);
echo "Mail $i gesendet an $empfaenger!<br />";
}
}
?>

Kommentare

F am Dienstag, 29. Mai 2007 um 22:39

cooles spam tool *lol* ;)

Markus René Einicher
Markus René Einicher am Mittwoch, 30. Mai 2007 um 09:47

Naja, man kann schon mehr damit machen als zu spammen. Im Endeffekt is das aber eh hinfällig weil mehrmals ankommende Mails mit gleichem Inhalt nur einmal durchgelassen werden.