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 />";
		}
	}
?>