Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Sonntag, 16. Mai 2004, 15:15

Die Mail- Funktion

Erst einmal ein warmes Hallo in die Runde!


Ich wollte mich auch mal mit einem zwar kleinen, aber ich hoffe dennoch aufklärenden Beitrag zu Worte melden!
Mein kleines Refferat handelt über die mail-Funktion in PHP.


Vorraussetzungen:
Anfangen möchte ich mit den Vorraussetzungen. Erforderlich, um die mail-Funktion nutzen zu können, ist ein Server der 1. PHP unterstüzt (ab V. 3) und 2. die "sendmail" Funktion erlaubt.
Des wieteren benötigt man einen PHP- Coder (ich empfehlen den PHP Coder von www.phpide.de) benötigt.



Schritt 1 - Das Formular:
Zuerst brauchen wir ein Formular, dass entweder in einer PHP- oder HTML- Datei geschrieben ist:

Quellcode

1
2
3
4
5
6
<form action="mail.php" method="post">
<input type="Text" name="name" value="Ihr Name" size="20" maxlength="40">
<input type="Text" name="vorname" value="Ihr Vorname" size="20" maxlength="40">
<input type="Text" name="mail" value="Ihre E-Mailadresse" size="20" maxlength="40">
<input type="Submit" name="senden" value="Senden"> <----> <input type="reset">
</form>


Wichtig ist, dass im <form>- Tag "action" mit der Datei, in dem wir später das PHP Script reinschreiben und "method" mit "post" gekennzeichnet ist!


Schritt 2 - Das PHP Script:
Nun erstellen wir mit unserem PHP-Coder eine neue Datei, die wir mail.php nennen.

Die einfache mail-Funktion sieht wiefolgt aus:

PHP-Quelltext

1
mail("mail@domain.tld""Betreff""Nachricht""From: Mail2 - Bezeichnung <mail2@domain.tld>");

Hier habe ich einfach einige Werte eingestezt. In den ersten "" steht die E-Mailadresse, an die die E-Mail geschickt werden soll(hier "mail@domain.tld")!
Wichtig ist das Kommer nach den Werten, ausgenommen der letzte Wert!
Der Zweite Wert gibt den Betreff der Nachricht an (hier "Betreff").
In dem dritten Wert wird die Nachricht der Mail angegeben (hier "Nachricht").
Nun wird im vierten und letzten Wert der Absender gekennzeichnet (hier "From: Mail2 - Bezeichnung < mail2@domain.tld>").
In diesem Wert darf nur die E-mail Adresse (hier "mail2@domain.tld") geändert werden. Außerdem sollte man vor den <> Noch ein Bezeichnung Eintragen (hier "Mail2 - Bezeichnung").



Jetzt gleichen wir das Script an das schon erstellt Formular an:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?PHP
// make Vars "register_globals=OFF" - Kompatible
$name $_POST['name'];
$vorname $_POST['vorname'];
$email $_POST['email'];

$an "webmaster@domain.tld";
$betreff "Nachricht von www.domain.tld";
$message "Ihnen wurde soeben eine Nachricht von www.domain.tld geschickt:\n ".$name.", ".$vorname." ( ".$mail." ) schrieb: \n\n ".$text;
$from "From: Kontakt Script - www.domain.tld <kontakt@domain.tld>"

mail($an$betreff$message$from);

?>

Jetzt haben wir die im Formular verwendeten Variablen (im Formular mit name="" gekennzeichnet) in das PHP Script eingebaut. Die Variablen werden dank method="post" in die PHP Datei übertragen!
Um das Script etwas variabler zu machen, sind die Werte in Variablen außerhalb der mail-Funktion gesetzt.


Jetzt ist das Script eigentlich fertig und könnte so verwendet werden! Man könnte aber auch noch eine weiteres Feature einbauen...


Schritt 3 - Bestätigungsmail an den User:
Nun kann man das Script noch erweitern und eine Bestätigungsmail an den User schicken.
Um dies zu tun, muss man nur die Mail funktion wieder zum Einsatz bringen:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?PHP

$betreff_user "Bestätigungsmail von www.domain.tld";
$message_user "Sehr geehrte/r ".$vorname." ".$name.",\n vielen Dank für Ihre Nachricht! Der Webmaster wird sie in den nächsten Tagen bearbeiten! \n\n MfG, www.domain.tld";
$from_user "From: Kontakt Script - www.domain.tld <kontakt@domain.tld>"

mail($mail$betreff_user$message_user$from_user);

?>


Hier sind einfach nur andere Werte für die Variablen eingesetzt. Die Variable $mail stammt aus der Formular Datei!



Ich hoffe, das Tutorial ist soweit verständlich! Wenn ihr irgendwo Fehler entdeckt, dürft ohr sie behalten, vielleicht noch selbst verwenden :)) und bitte in diesem Thread posten!!!


MfG, Chris
Signatur von »Xyries« "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."
John Osborne engl. Dramatiker

2

Sonntag, 16. Mai 2004, 16:20

Hi, erstmal Danke für deine Arbeit.

Mich würde aber interessieren, was geschieht, wenn sendmail nicht auf dem Server installiert ist. Bekommt man dann eine Fehlermeldung oder geschieht nichts?
Wenn auf der PHPinfo-seite den Pfad zu Sendmail zu sehen ist, könnte man doch eigentlich davon ausgehen, das es installiert ist.

grüße

oop1
Signatur von »oop1« _________

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »oop1« (16. Mai 2004, 16:23)


3

Sonntag, 16. Mai 2004, 17:40

Zitat

Original von oop1
Hi, erstmal Danke für deine Arbeit.

ui :))... gern geschehen!!!

Zitat

Original von oop1
Mich würde aber interessieren, was geschieht, wenn sendmail nicht auf dem Server installiert ist. Bekommt man dann eine Fehlermeldung oder geschieht nichts?

Normalerweise solltest du eine Fehlermeldung erhalten...

Zitat

Original von oop1
Wenn auf der PHPinfo-seite den Pfad zu Sendmail zu sehen ist, könnte man doch eigentlich davon ausgehen, das es installiert ist.


hmm... bei meinem Webspace ist der Pfad auch angegeben und bei mir kann man Mails versenden!! Ich denke, du solltest davon ausgehen, dass es funktioniert!! :]


MfG, Chris
Signatur von »Xyries« "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."
John Osborne engl. Dramatiker

4

Montag, 17. Mai 2004, 19:26

mail() und sendmail

Ich finde ja weder das Formular besonders toll noch die Art, mit der du es behandelst, Xyries. Vielleicht sollte man gerade in einer Einführung für Anfänger auf die im Manual als richtig, zeitgemäß und sicher ausgezeichneten Vorgehensweisen hinweisen. Damit meine ich zum Beispiel die Verwendung von $_POST usw.
Außerdem wäre mMn noch ein Hinweis auf die Möglichkeiten des vierten Parameters angebracht gewesen, wie zum Beispiel hier: http://php-faq.de/q/q-mail-absender.html
Aber sonst ganz gut die Einführung. :)

Zu den Fragen:

Zitat

Original von oop1
Mich würde aber interessieren, was geschieht, wenn sendmail nicht auf dem Server installiert ist. Bekommt man dann eine Fehlermeldung oder geschieht nichts?

Es wird natürlich keine Mail versendet. Außerdem wird eine Fehlermeldung produziert und die Mail-Funktion liefert false zurück. Das kann man ganz gut nutzen, um die automatische Fehlermeldung abzufangen und eine eigene Nachricht auszugeben:

PHP-Quelltext

1
echo @mail(....) ? 'Mail verschickt' 'Mailversand fehlgeschlagen';

Zitat

Wenn auf der PHPinfo-seite den Pfad zu Sendmail zu sehen ist, könnte man doch eigentlich davon ausgehen, das es installiert ist.

Also auf meinem lokalen Testserver unter Windows ist kein Pfad für sendmail angegeben (jedenfalls nicht in der phpinfo sichtbar) und es funktioniert trotzdem, wenn ich meinen Mailserver (Mercury) starte.
Andersherum kann es aber auch sein, dass ein sendmail-Pfad angegeben ist, das Programm aber dort gar nicht liegt oder nicht richtig funktioniert oder oder oder :confused:
Alle Klarheiten beseitigt? ;)
Gut.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »MyWege« (1. April 2005, 16:28)


5

Dienstag, 18. Mai 2004, 18:21

RE: mail() und sendmail

Zitat

Original von MyWege
Ich finde ja weder das Formular besonders toll noch die Art, mit der du es behandelst, Xyries. Vielleicht sollte man gerade in einer Einführung für Anfänger auf die im Manual als richtig, zeitgemäß und sicher ausgezeichneten Vorgehensweisen hinweisen. Damit meine ich zum Beispiel die Verwendung von $_POST usw.

Das Formular war natürlich nur zu Demonstrationszwecken!

hmm... kannst du mir bidde mal den Unterschied zwischen $_POST[var] und $var erklären?!

Zitat

Original von MyWege
Außerdem wäre mMn noch ein Hinweis auf die Möglichkeiten des vierten Parameters angebracht gewesen, wie zum Beispiel hier: http://php-faq.de/q/q-mail-absender.html


ähm:
[q=Xyries]Nun wird im vierten und letzten Wert der Absender gekennzeichnet (hier "From: mail2@domain.tld <Mail2 - Bezeichnung>"). [/q]

Was den Rest angeht, habe ich mir gedacht, dass es für eine Einführung vielleicht ein bissal zu viel ist... viellicht schreibe ich ja noch eine Fortsetzung... ;)

[q=MyWege]Aber sonst ganz gut die Einführung. :)[/q]
Joa, denke ich auch :))! Danke :]
Signatur von »Xyries« "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."
John Osborne engl. Dramatiker

6

Dienstag, 18. Mai 2004, 23:43

RE: mail() und sendmail

Zitat

Original von Xyries
hmm... kannst du mir bidde mal den Unterschied zwischen $_POST[var] und $var erklären?!

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
<a href="geheim.php?logged_in=1">Geheime Seite</a>

<?php
session_start();
if ($logged_in)
  echo 'OK';
else
  echo 'Nicht OK';
echo '<hr />';
if ($_SESSION['logged_in'])
  echo 'OK';
else
  echo 'Nicht OK';
ist zwar nicht $_POST aber ich denke, du verstehst das prinzip?

abgesehen davon musst du die arrays $_POST, $_GET und was es noch alles gibt nicht in funktionen mühsam von hand einbinden (stichwort: global)


mehr dazu: http://www.php.net/manual/reserved.variables.php
Signatur von »mrhappiness« Ich denke, also bin ich. Einige sind trotzdem...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »mrhappiness« (18. Mai 2004, 23:45)


7

Mittwoch, 19. Mai 2004, 13:33

RE: Die Mail- Funktion

@ Xyries:

Wie ich sehe, lässt Du Dich trotz der kleinen Kritik nicht entmutigen. Dies ist auch genau die richtige Einstellung. :) Übrigens: ganz großes Lob, dass mal wieder jemand die WSB-Beitragsreihe erweitert hat. Das kann nämlich nicht jeder hier im Board von sich behaupten! ;)

8

Mittwoch, 19. Mai 2004, 13:46

RE: Die Mail- Funktion

1. ich hab mal oben das Script so editiert, dass es nu auch mit "register_globals=OFF" funzt :approve:

2. schliesse ich mich dem Lobe des Herrn Investorman an :tongue:
Signatur von »TheNobody Style«

9

Mittwoch, 19. Mai 2004, 14:45

Dieser Post wird ein einziger Dankes-Post :o) :


Danke, mr_happiness für die Aufklärung!

[q=Investi]Wie ich sehe, lässt Du Dich trotz der kleinen Kritik nicht entmutigen. Dies ist auch genau die richtige Einstellung.[/q]
:approve: Danke... *verlegendreinschau*

[q=nochmal Investi]ganz großes Lob, dass mal wieder jemand die WSB-Beitragsreihe erweitert hat. Das kann nämlich nicht jeder hier im Board von sich behaupten! [/q]

hui *nochverlegenerdreinschau* Danke!!


[q=TNS]1. ich hab mal oben das Script so editiert, dass es nu auch mit "register_globals=OFF" funzt [/q]
Ok, Dankeschön!

[q=2. TNS]schliesse ich mich dem Lobe des Herrn Investorman an [/q]
Dankeschön!! *nochverlegenerdreinschauengehtgarnet* ;)


MfG, Chris
Signatur von »Xyries« "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."
John Osborne engl. Dramatiker

10

Freitag, 1. April 2005, 14:32

Der Link von Mywege (http://dclp-faq.de/q/q-mail-absender.html) linkt auf den falschen Inhalt, die Seite müsste jetzt folgende sein
http://www.php-faq.de/ch/ch-mail.html.
Das kann ja mal bei Gelegenheit jemand ändern.

gruß

oop1
Signatur von »oop1« _________

11

Montag, 13. März 2006, 19:17

so lange und keinem ist es aufgefallen:
die Schreibweise in From: war in dem Tut vertauscht

"From: mail2@domain.tld <Mail2 - Bezeichnung>" passt so leider nicht ... es muss genau anders herum und zwar "From: Mail2 - Bezeichnung <mail2@domain.tld>"

Quellcode

1
2
benutzer@example.com 
Name <benutzer@example.com>


hab ich mal in dem Tut geändert ;)
Signatur von »TheNobody Style«