Problem mit mail()

Miraculixx

Erfahrenes Mitglied
Hi!
Ich möchte in einer PHP-Seite ein e-mail versenden, bekomme aber jedes Mal folgende Fehlermeldung:
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in c:\.....\insert.php on line 180

Code:
PHP:
$empf = "empfaenger@mail.com";
$betreff = "BETREFF";
$text = "TEXT";
$sender = "sender@mail.com";
mail($empf, $betreff, $text, "From: $sender <$sender>";

Also so viel ich aus der Fehlermeldung herauslesen kann, muss ich irgend etwas in der php.ini ändern. Aber was?
Die Funktion wird noch nicht funktionieren, weil die Seite derzeit noch auf meinem lokalen Rechner läuft, aber das ergäbe doch dann einen anderen Fehler oder?
Und noch was: muss ich die Parameter für die Funktion mail() mit Variablen angeben, oder kann ich da auch einfach einen String übergeben (z.B. mail("mail@mail.com", "..." ...))?
Und: Muss beim Sender das "From: " dabei stehen, oder ist das egal?

Ich hoffe es kann mir jemand meine Fragen (oder zumindest einige davon) beantworten.
 
Du kannst sowohl Variablen angeben als auch direkt die Werte in die Funktion setzen.

Das "From:" denke ich wirst Du angeben muessen, da dieser Wert nicht den Absender darstellt sondern die eMail-Header.

Hier mal ein Link zum Thema: mail()
 
OK vielen Dank!
Aber damit wäre meine wichtigste Frage noch nicht geklärt: Warum diese Fehlermeldung auftritt? Hast du dafür auch noch eine Idee?
 
Dazu steht auf der verlinkten Seite, dass Du entweder die From-Address in der Funktion angeben musst, oder in der php.ini

Probier's mal so:
PHP:
mail($empf, $betreff, $text, "From: ".$sender." <".$sender.">";
 
Genau so hab ich es ja auch, es funktioniert trotzdem nicht.
Ob ich die Variablen mit "bla ".$var." bla" einbinde oder nur mit "bla $var bla" ist meines Wissens nach egal, zumindest ändert es hier nichts an dem Fehler...
 
Ich denke nicht, dass es egal ist ob Du
"hallo $bla!"
oder
"hallo ".$bla."!"
nutzt.
Denn bei der einen Variante gibst Du ja $bla als Text an.

Hast Du die von mir gepostete Variante probiert?
 
Ich habe genau deine Variante ausprobiert, aber es hat nichts an der Fehlermeldung geändert.

Und ich habe einen kleinen Test gemacht:
PHP:
$blubb = "asdf asdf";
echo "(((".$blubb.")))";
echo "((($blubb)))";
lieferte folgendes ergebnis:
PHP:
(((asdf asdf)))(((asdf asdf)))

Mich hat es ja auch gewundert, aber einen besseren Beweis gibts eben nicht mehr ;)
 
echo unterscheidet da zwischen "" und ''
Probier mal
PHP:
$bla="hallo";
echo 'Bla: $bla';
echo "Bla: $bla";
Ich weiss aber nicht ob der Unterscheid zwischen "" und '' auch fuer andere Funktionen gilt.
Ich geh lieber auf Nummer sicher und arbeite mit Stringverkettung.
 
hmm.. also damit ich das richtig verstanden habe: Immer wenn ich ein echo " " schreibe, dann wird der Inhalt der Variable verwendet und wenn ich ' ' verwende dann der Name der Variable (also der Text der dort steht).
Und bei Strings gilt das Gleiche. Also gilt folgendes:
$name = "hans";
$str = "ich bin $name"; ==> ich bin hans
$str = 'ich bin $name'; ==> ich bin $name

Stimmt das? Wenn ja, warum wird dann nicht immer die erste Variante verwendet? Das wäre doch viel weniger Schreibarbeit.
 
Zurück