email verschicken (SMTP)

sunflower84

Erfahrenes Mitglied
Hallo

Ich habe ein Formular gemacht. Wenn jemand dieses Formular ausgefüllt hat soll automatisch eine email an mich geschickt werden und eine Bestätigungsmail an die email die eingegeben wurde.
Hab das folgendermaßen bis jetzt realisiert:
PHP:
<?php

### Konfiguration ###


$strEmpfaenger = 'meinemail@xy.de';
$strFrom       = '"Formmailer" <meinemail@xy.de>';
$strSubject    = 'Anfrage';

$strReturnhtml = 'danke.html';

$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    <head>
        <title>Einfacher PHP-Formmailer</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <h1>Anfrage</h1>
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
            <dl>
                <dt>Name:</dt>
                <dd><input type="text" name="Versender" /></dd>
                <dt>Ihre E-Mail:</dt>
                <dd><input type="text" name="E-Mail" /></dd>
                <dt>Bemerkungen:</dt>
                <dd><textarea name="Bemerkungen" rows="3" cols="20">Bemerkungen</textarea></dd>
            </dl>

            <p>
            <input type="submit" value="Senden" />
            <input type="reset" value="Zurücksetzen" />
            </p>
        </form>
    </body>
</html>

Bekomm jetzt aber folgende Fehlermeldung:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\Webseite_aktuell\information.php on line 50
Die Mail konnte nicht versendet werden.

Außerdem fehlt mir noch die Bestätigungsmail die an die eingegebene email geschickt werden soll.

Hab auch schon in meiner ini nachgeschaut.Hab eine sendmail.ini und eine sendmail_example.ini.
Hab bei beiden schon den Benutzername und das Passwort eingegeben bekomme aber immer noch die gleiche Fehlermeldung.
Benutze Outlook(POP3) Vielleicht liegt es daran. Wie löse ich dieses Problem. Es soll dann natürlich später auch auf dem FTP funktionieren und nicht nur lokal.

Lg
Sunflower94
 
Du musst einen E-Mail-Server installiert und korrekt konfiguriert haben, damit du E-Mails verschicken kannst. Bei XAMPP müsste Mercury Mail dabei sein, das du aber vermutlich noch starten und konfigurieren musst.
 
Ja, Mercury Mail ist dabei. Aber was muss ich da denn alles konfigurieren. Da gibt es sehr viele Einstellungen die man machen kann. Hab auch schon einiges ausprobiert. Aber leider ohne Erfolg. Gibt dazu irgendwo eine Anleitung was ich genau machen muss?

Wenn es lokal dann mit Mercury funktionieren würde, wie mach ich es dann auf meinem FTP? Dort läuft doch dann Mercury Mail nicht, oder?
Wenn ich Mercury gestartet habe bekomme ich eine andere Fehlermeldung:

Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry. in C:\xampp\htdocs\Webseite_aktuell\information.php on line 50
Die Mail konnte nicht versendet werden.

Lg
Sunflower84
 
Zuletzt bearbeitet:
Hab es hin bekommen. Jetzt kommt zwar keine Fehlermeldung. Aber er verschickt jetzt leider auch keine mail. Woran könnte das liegen?

Lg
Sunflower84
 
Weil die Mailserver an die du diese Mails schicken willst keine Nachrichten von "Privatservern" akzeptieren... d.h. du kannst nicht einfach von daheim Mails an die ganze Welt verschicken, du müsstest dir einen Server mieten oder die Mails über einen E-Mail-Dienst versenden... ( Private IP-Adressen sind blacklisted )

Gruß
 
Mein Provider ist Hosteurope.Kann also direkt bei Hoseurope emails senden und empfangen. Mit Outlook(POP3) das gleiche. Das ist doch in dem Sinne ein Server für den ich monatlich bezahle, oder was meinst du mit Server mieten?
 
Es geht darum, dass auf deinem lokalen Testsystem zu Hause ein eMailserver laufen muss, um die mail()-Funktion in der Testumgebung zu nutzen. (Unabhängig von Outlook oder deiner "normalen" eMail-Adresse)
Auf deinem "FTP", bzw Webserver, sollte das, wenn da auch PHP drauf läuft, alles vorkonfiguriert sein und ohne weitere Einstellungen funktionieren!
 
Hab jetzt folgendes Script auf meinem FTP, aber leider sendet er nicht. Hab auch keine Fehlermeldung. Wäre nett wenn jemand mal drüber schauen könnte.
PHP:
<?php
$empfaenger = "meinemail@xy.de"; 
$field1 = $_POST["name"];
$field2 = $_POST["email"];
$field13 = $_POST["betreff"];
$field14 = $_POST["nachricht"];


$send = '
        Die e-mail ist von '.$_POST["name"].'

        Die e-mail adresse ist '.$_POST["email"].'

        Der Betreff ist '.$_POST["betreff"].'

        Das hier ist die Nachricht '.$_POST["nachricht"].'
        ';


if  (mail($empfaenger, 'Mail', $send, $from))
    {
    echo "Deine E-Mail wurd erfolgreich abgesendet.";
        }
        else
        {
       echo "Alle Felder ausgefüllt?";
}
?>
<html>
<head>
<title>E-Mail</title>
</head>

<body>
<form name="email" method="post" action="information2.php">
  <br>
  <table width="100%"  border="1">
    <tr>
      <td width="6%">        Name:<br>        </td>

      <td width="94%"><input name="name" type="text" id="name"></td>
    </tr>
    <tr>
      <td width="6%">E-Mail:</td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr>
      <td width="6%">Betreff:</td>

      <td><input name="betreff" type="text" id="betreff"></td>
    </tr>
    <tr>
      <td width="6%" rowspan="2" valign="top">Nachricht:</td>
      <td><textarea name="nachricht" cols="50" rows="8" id="nachricht"></textarea></td>
    </tr>
    <tr>
      <td><input type="submit" name="Submit" value="Senden">

      <input type="reset" name="Submit2" value="Zurücksetzen"></td>
    </tr>
  </table>


</form>
</body>
</html>

Lg
Sunflower84
 
Es kappt jetzt mit dem verschicken.Hab einen Parameter vergessen.
Hab nur noch ein kleines Problem.
Ich habe ein link. Wenn man auf diesen Link klickt öffnet sich ein popup wo man die Eingabe von email usw. machen muss. Aber sobald sich das popup öffnet werden die Daten schon übermittelt. Wenn ich alles ausfülle und auf senden klick dann auch. So sollte es ja sein. Aber die Daten sollen nicht übermittelt werden, wenn sich nur das popup öffnet. Also ist diese if gleich erfüllt:
PHP:
if  (mail($empfaenger, 'Mail', $send, "-f meinemail@xy.de"))
    {
    echo "Ihre E-Mail wurd erfolgreich abgesendet.";
        }
        else
        {
       echo "Alle Felder ausgefüllt?";
}
?>

Wie löse ich das denn?

Lg
Sunflower84
 
HI, mach doch mit
PHP:
if(isset(submit]){ Mail versenden;}
Also in dem Fall erst wenn der Submit button gedrückt wurde soll die Mail gesendet werden.
 
Zurück