Du bist nicht angemeldet.

  • Anmelden
  • Registrieren

NoX

Anfänger

Beiträge: 18

1

28.06.2005, 12:36

[PHP] Mailen mit PHP

Einleitung:
Dieses Script benötigt einen (UNIX)-Server mit installiertem PHP3/PHP4. Das Verschicken der Mails wird über die mail()-Funktion geregelt - außerdem wird überprüft, ob die Mail erfolgreich verschickt wurde oder nicht. Das Script ist noch recht einfach und wird von mir in einem zweiten Teil weiter ausgebaut werden.

Schritt für Schritt:
Wir werden uns nun die einzelnen Teile des Scripts separat ansehen. Die Zahlen am Anfang sind die Zeilenzahlen, auf die ich mich im Text der Einfachheit halber beziehe. Diese dürfen natürlich nicht mit abgetippt werden. Das komplette Script - ohne Zeilenzahlen - ist noch einmal am Ende des Artikels gelistet.

Wir beginnen mit den typischen HTML-Header-Angaben, damit der Browser den Inhalt auch ordentlich ausgeben kann:

Quellcode

1
2
3
4
5
6
01: <html>
02: <head>
03: <title>Kleines Mailprogramm</title>
04: </head>
05: <body>
06: <h2 align="center">Kleines Mailprogramm</h2>

Den Seitentitel, eventuelle body- bzw. CSS-Angaben und Überschriften kann man natürlich frei definieren und den eigenen Gegebenheiten anpassen.

Nun folgt das Formular, über das wir alle benötigten Daten wie Empfängeradresse und Mitteilung eingeben können:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
07: <form action="<?php echo $PHP_SELF; ?>" method="post">
08: <table border=0 width=600>
09: <tr>
10: <td width=200>Empfänger-Mail-Adresse:</td>
11: <td width=400><input type="text" name="empfang" size="30"></td>
12: </tr>
13: <tr>
14: <td width=200>Betreff:</td>
15: <td width=400><input type="text" name="betreff" size="30"></td>
16: </tr>
17: <tr>
18: <td width=200>Absender-Mail-Adresse:</td>
19: <td width=400><input type="text" name="absender" size="30"></td>
20: </tr>
21: <tr>
22: <td width=200 valign="top">Mitteilung:</td>
23: <td width=400><textarea cols="50" rows="5" name="mitteilung"></textarea></td>
24: </tr>
25: <tr>
26: <td width=200> </td>
27: <td width=400>
28: <input type="submit" name="send" value="Mail abschicken">
29: <input type="Reset" value="Eingaben löschen">
30: </td>
31: </tr>
32: </table>
33: </form>

Die in Zeile 7 verwendete Variable $PHP_SELF bewirkt, dass die Daten beim Abschicken des Formulars an sich selbst geschickt werden. Das macht Sinn, da wir nur eine Datei benutzen. So braucht man nicht zu wissen, unter welchem Namen man das Script gespeichert hat - diese Variable "weiß" es von allein.
Des weiteren sind natürlich die name-Einträge wichtig aller Formularfelder. Diese sollten so übernommen werden, da genau diese Namen im PHP-Teil abgefragt werden.
Die (Form der) Tabelle an sich kann natürlich wieder nach eigenem Ermessen an die persönlichen Bedürfnisse angepasst werden.

Jetzt wird es interessant, denn nun folgt der entscheidende PHP-Code:

Quellcode

1
2
3
4
5
6
7
8
9
34:
35: <?php
36: if (isset($send)) {
37: function mailme($empfang, $betreff, $mitteilung, $absender) {
38: $post = mail($empfang, $betreff, $mitteilung,"From: $absender");
39: return $post;
40: }
41:
42: $post = mailme($empfang, $betreff, $mitteilung, $absender);

Zeile 36 überprüft, ob auf den Abschicken-Button des Formulars geklickt wurde, ansonsten (z.B. wenn das Script zum ersten Mal aufgerufen wird) wird dieser Code nicht ausgeführt (und damit - logischerweise - noch keine Mail verschickt).
In Zeile 37 definieren wir eine eigene Funktion mit den Variablen, die wir durch den Funktionsaufruf aus Zeile 42 übergeben. Diese Variablen enthalten die Werte aus dem abgeschickten Formular!
Zeile 38 verarbeitet nun die Variablen in der PHP-mail()-Funktion und ist für das Versenden der Mail zuständig. Der erste Parameter der Funktion ist immer die Empfänger-E-Mail-Adresse, der zweite ist der Betreff, der dritte die eigentliche Mitteilung (erst mal nur im reinen Text-Format) und der vierte Parameter kann wiederum mehrere Parameter in sich vereinen. In unserem Beispiel ist das nur die Absender-E-Mail-Adresse. Die einzelnen Parameter der Funktionen werden immer durch ein Komma getrennt.

Das Ergebnis des Mail-Versands (erfolgreich oder nicht) wird in der Variable $post zurückgegeben.

Quellcode

1
2
3
4
5
6
7
8
43:
44: if ($post == TRUE) {
45: echo "<b>Mail wurde erfolgreich verschickt!</b>";
46: } else {
47: echo "<b>Mail konnte leider nicht verschickt werden!</b>";
48: }
49: }
50: ?>

Wurde die Mail erfolgreich versandt, dann gibt die mail()-Funktion den Wert TRUE zurück, ansonsten FALSE. In Zeile 33 wird dieser Zustand nun abgeprüft und eine entsprechende Meldung unterhalb des Formulars ausgegeben. Nun kann eine weitere Mail verschickt werden.

Zu einem Fehler im Mail-Versand kommt es z.B., wenn keine Empfänger-E-Mail-Adresse eingegeben wurde. Klar, woher soll der Server auch wissen, wohin die Mail verschickt werden soll? Alle anderen Felder können ausgelassen werden - ob das Sinn macht, ist natürlich eine andere Frage.

Abschließend beenden wir natürlich unser Dokument mit den entsprechenden HTML-Angaben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
51:
52: </body>
53: </html>
Das komplette Listing:
 
 
<html>
<head>
<title>Kleines Mailprogramm</title>
</head>
<body>
<h2 align="center">Kleines Mailprogramm</h2>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<table border=0 width=600>
<tr>
<td width=200>Empfänger-Mail-Adresse:</td>
<td width=400><input type="text" name="empfang" size="30"></td>
</tr>
<tr>
<td width=200>Betreff:</td>
<td width=400><input type="text" name="betreff" size="30"></td>
</tr>
<tr>
<td width=200>Absender-Mail-Adresse:</td>
<td width=400><input type="text" name="absender" size="30"></td>
</tr>
<tr>
<td width=200 valign="top">Mitteilung:</td>
<td width=400><textarea cols="50" rows="5" name="mitteilung">
</textarea></td>
</tr>
<tr>
<td width=200> </td>
<td width=400>
<input type="submit" name="send" value="Mail abschicken">
<input type="Reset" value="Eingaben löschen">
</td>
</tr>
</table>
</form>
 
<?php
if (isset($send)) {
function mailme($empfang, $betreff, $mitteilung, $absender) {
$post = mail($empfang, $betreff, $mitteilung,"From: $absender");
return $post;
}
 
$post = mailme($empfang, $betreff, $mitteilung, $absender);
 
if ($post == TRUE) {
echo "<b>Mail wurde erfolgreich verschickt!</b>";
} else {
echo "<b>Mail konnte leider nicht verschickt werden!</b>";
}
}
?>
 
</body>
</html>



Tutorial © by Webstone.info

chrnagel

Anfänger

Beiträge: 2

2

09.07.2005, 17:37

Nachfrage zum php-mail-script

Ist dieses php-mail-script auch erweiterbar, z.B mit folgenden Angaben Telefon, Ort....

Diese kommen im Formular mit der "name" angabe "telefon" "ort" dann vor.

Im php-script an den entsprechenden Stellen dann einfach eintragen: $telefon, $ort... Sehe ich das so richtig?

Thema bewerten