Keine E-Mail wird versendet

marvinlol

Erfahrenes Mitglied
Hallo zusammen.

Ich habe schon etliche "Scripts" ausprobiert aber nie wird eine E-Mail an die E-Mail gesendet, die ich angebe.

Hier mal der Code:

PHP:
<? error_reporting(E_ALL);
if($_POST['senden1']) {

$anrede = $_POST['anrede'];
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$from = $_POST['from'];
$betreff = "NEUE NACHRICHT: ".$_POST["betreff"]."";
$empfaenger = 'marv.flenche@gmx.de';



$nachricht = "	Anrede: ".$_POST["anrede"]." </br>
				Vorname: " . $_POST["vorname"] . "</br>
                Nachname: " . $_POST["nachname"] . "</br>
                E-Mail: " . $_POST["from"] . "</br></br>
                Text: " . $_POST["text"] . "</br></br> "; 


mail($empfaenger, $betreff, $nachricht);  

} else {
?>

<form action="email.php" method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
Anrede:</td>
    <td><input type="hidden" name="senden1" value="1" /><select name="Herr">
      <option>Herr</option>
      <option>Frau</option>
    </select></td>
  </tr>
  <tr>
    <td>Vorname:</td>
    <td><input type="text" name="vorname" /></td>
  </tr>
  <tr>
    <td>Nachname: </td>
    <td><input type="text" name="nachname" /></td>
  </tr>
  <tr>
    <td>Ihre E-Mail:</td>
    <td><input type="text" name="from" /></td>
  </tr>
  <tr>
    <td>Betreff:</td>
    <td><input type="text" name="betreff" /></td>
  </tr>
  <tr>
    <td>Text:</td>
    <td><textarea name="text" cols="40" rows="10"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" value="Senden" /></td>
  </tr>
</table>

</form>
<? } ?>

Kann es sein, dass der Mailversand auf meinem Server ausgeschaltet ist?
Wenn ja, wo kann ich das bei phpinfo erkennen ?

Wäre für Eure Hilfe sehr dankbar !
 
Vermutung: Du hast in der php.ini die Einstellung display_errors auf off stehen. Schalte sie doch bitte mittels

PHP:
ini_set('display_errors', 1);

ein. mail() wird eine Fehlermeldung ausgeben, wenn es nicht funktioniert.
 
Hm..also die display_error funktion steht auf : "On"

Das problem ist, dass ich keine Fehlermeldung bekomme.

Wenn ich es so schreibe:

PHP:
if(mail($empfaenger, $betreff, $nachricht)) {
echo "Erfolgreich!"; }else {echo "Fehler!"; }

bekomme ich "Fehler!" angezeigt.
Aber ich weiß nicht, woran es liegt, dass ich false bekomme.

Hier noch mal der aktuelle Code:

PHP:
<? 

if($_POST['senden1']) {
error_reporting(E_ALL);
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$from = $_POST['from'];
$betreff = "NEUE NACHRICHT: ".$_POST["betreff"]."";
$text = "In der Nachricht von ".$vorname." ".$nachname." steht:<br />".$_POST["text"]."";
$empfaenger = 'marv.flenche@gmx.de';



$nachricht = "	
				Vorname: " . $_POST["vorname"] . "</br>
                Nachname: " . $_POST["nachname"] . "</br>
                E-Mail: " . $_POST["from"] . "</br></br>
                Text: " . $_POST["text"] . "</br></br> "; 


if(mail($empfaenger, $betreff, $nachricht)) {
echo "Erfolgreich!"; }else {echo "Fehler!"; }  

} else {
?>

<form action="index.php?site=email" method="post">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
Anrede:</td>
    <td><input type="hidden" name="senden1" value="1" /><select name="Herr">
      <option>Herr</option>
      <option>Frau</option>
    </select></td>
  </tr>
  <tr>
    <td>Vorname:</td>
    <td><input type="text" name="vorname" /></td>
  </tr>
  <tr>
    <td>Nachname: </td>
    <td><input type="text" name="nachname" /></td>
  </tr>
  <tr>
    <td>Ihre E-Mail:</td>
    <td><input type="text" name="from" /></td>
  </tr>
  <tr>
    <td>Betreff:</td>
    <td><input type="text" name="betreff" /></td>
  </tr>
  <tr>
    <td>Text:</td>
    <td><textarea name="text" cols="40" rows="10"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="senden" value="Senden" id="senden" /></td>
  </tr>
</table>

</form>
<? } ?>

Ich stehe auf dem Schlauch.
 
Hmm, kommt die Mail tatsächlich nicht an? Ich habe grad nach dem Thema gegoogled, und es gibt einen Thread in einem Forum, in dem beschrieben wird, das mail() false zurück liefert, obwohl die Mail versendet wurde.

Nächste Frage wäre, wo du deine Scripte testest. Auf einem realen Server im Internet oder lokal auf deinem Rechner zu Hause?
 
Dieses Script habe ich auf einem realen Server (online) getestet.
Ich bekomme keine neue E-Mail im Postfach und das Script liefert auch false.

Doch ich kann an meinem Script keinen fehler erkennen.
Kann es sein, dass die mail funktion "ausgeschaltet" ist ?
 
Ich nehme an, du hast keinen Mailserver auf deinem Webserver konfiguruert.
Ohne SMPT kannst du natürlich auch keine mails raussenden.

mehr als diesen Hinweis kann ich dir auch nicht geben...
 
Es ist ebenso möglich, das der SMTP-Server nicht richtig konfiguriert ist. GMX lehnt gerne Mails ab, die nicht dem Standard entsprechen. Das beste wird sein wenn du
- die Möglichkeit hast, in die Server-Logs zu schauen, mal zu analysieren, ob dein SMTP-Server überhaupt was raus schickt, und wenn nicht, was für ein Fehler in den Logs steht, oder
- wenn du die Möglichkeit nicht hast, die Logs zu betrachten, deinen Provider fragst, warum diese Mail nicht raus geht.

Das die Mail nicht ankommt, wenn du die Mail lokal testest, ist wirklich entweder damit zu erklären, das du Windows benutzt, auf dem standard-mäßig kein SMTP-Server installiert ist, oder, und was noch viel schwieriger wird, zu beheben, GMX keine Mails von SMTP-Servern akzeptiert, die von einer dynamischen IP-Range kommen und du keinen MX-Eintrag für deine IP bei deinem Provider hast. Das wird gemacht, um Spam zu unterbinden.
 
Zurück