limad89
Goto Top

Formulardaten mit php per e-mail verschicken

Hallo erstmal !

Ich habe ein kleines Problem und hoffe ihr könnt mir helfen.

Ich habe eine kleine aber doch recht feine Internetseite programmiert . Auf dieser Seite befindet sich auch ein Formular, nichts weltbewegendes , mit Name , E-Mail und einem Nachrichtenfenster , sodass Leute mit mir schnell und einfach Kontakt aufnehmen können. Ich möchte diese Daten per E-Mail an meine GMX-Adresse weiterreichen lassen .

Wenn ich bei <form action="mailto:..."> angebe öffnet sich outlook. Dass ist mir zu umständlich, deswegen bin ich auf PHP umgestiegen und hab ein bisschen Quelltext dazugeschrieben. Wenn ich die PHP-Seite nun aufrufe und auf senden klicke kam zuerst die Nachricht, dass ich die SMTP Einstellungen in php.ini ändern solle. Als SMTP habe ich dann mail.gmx.net eingetragen .

Wenn ich nun das Formular abschicke , bekomm ich aber weiterhin nicht die Daten übermittelt , sondern werde nur auf eine weisse Seite weitergeleitet.

Der Quellcode ist übrigens :
<?php

### Konfiguration ###

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'beispiel@providerxy.yx';  <-- Hier habe ich bereits meine GMX E-Mail Adresse eingetragen  

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <Versender@provider.xy>'; <-- Hier habe ich eine andere E-Mail angegeben.  

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Feedback';  

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden? 
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
# $strReturnhtml = 'http://www.google.de'; 

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$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>

        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">  
            <!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
            <dl>
                <dt>Ihr 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>
            <!-- Ende der Beispielangaben -->
            <p>
            <input type="submit" value="Senden" />  
            <input type="reset" value="Zurücksetzen" />  
            </p>
        </form>
    </body>
</html> 



Muss ich noch irgendetwas an der php.ini ändern ??


Mfg LimAd
Kommentar vom Moderator masterG am Apr 14, 2010 um 11:25:43 Uhr
Habe mir erlaubt den Code in einen Codeblock zu packen.

Content-Key: 140313

Url: https://administrator.de/contentid/140313

Printed on: April 24, 2024 at 08:04 o'clock

Member: dog
dog Apr 11, 2010 at 15:53:07 (UTC)
Goto Top
Eine weiße Seite nützt uns nichts.
Füge an den Anfang deines PHP-Scripts folgendes ein:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors','On');  
Und poste dann die Fehlermeldung (und dann zumindest das ini_set wieder auskommentieren).
Member: matze2010
matze2010 Apr 11, 2010 at 16:43:15 (UTC)
Goto Top
Hallo LimAd,

ich denke, der Server wird nichts versenden. In der Regel benutzt mail() die Funktionalität eines Mailversenders (sendmail auf Linuxsystemen). Deshalb steht in der php.ini meist "localhost". Wenn du nun mail.gmx.net einträgst, dann musst du dich dort natürlich authorisieren. gmx.net wird keine anonymen Versender zulassen.

Bevor du nun sendmail installierst, solltest du bedenken, dass vor allem die Freemail-Anbieter nicht eingetragene E-Mail-Versender sperren. (Du kannst also nicht von xyz.de Mails für meineDomain.de versenden, wenn nicht xyz.de als Mailserver eingetragen ist.

Meine richtig aktive PHP-Zeit ist schon was länger her, aber ich meine, es gibt smtp Skripte (hotscripts.com oder ähnliche Sammlungen), welche sich dann bei gmx.net anmelden können, um dir selbst (an die selbe Adresse) eine Mail zu senden. Allerdings musst du dort Kundennummer und Passwort im Skript eintragen.

Noch ein Link zum lesen, den ich grad gefunden habe:
http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authen ...

Lg
Matze
Member: dog
dog Apr 11, 2010 at 16:47:41 (UTC)
Goto Top
Bevor du nun sendmail installierst, solltest du bedenken, dass vor allem die Freemail-Anbieter nicht eingetragene E-Mail-Versender sperren. (Du kannst also nicht von xyz.de Mails für meineDomain.de versenden, wenn nicht xyz.de als Mailserver eingetragen ist.

So funktioniert das Spielchen nicht, denn damit würden sich die Freemail-Anbieter alle selbst kicken, weil sie aufgrund der Masse and Mails andere Hosts für den Versand und den Empfang benutzen und Techniken wie SPF werden kaum umgesetzt.
Member: matze2010
matze2010 Apr 11, 2010 at 16:52:30 (UTC)
Goto Top
Hallo dog,

ich habe bei gmx die Erfahrung gemacht (ist schon etwas her), dass es nicht möglich war, von meinem Server Mail zu versenden. Vielleicht geht es heut wieder oder es war ein anderer Fehler, habe diesbezüglich keine 100%igen Informationen, da ich den Host dann einfach eingetragen habe.

<edit>
GMX zumindest hat einen SPF -Eintrag.
gmx.net IN TXT v=spf1 ip4:213.165.64.0/23 ip4:74.208.5.64/26 -all 300s (5m)
</edit>

Lg
Matze
Member: LimAd89
LimAd89 Apr 12, 2010 at 07:51:10 (UTC)
Goto Top
Danke für die Tipps bis jetzt .

Auf den ersten Beitrag zurückzukommen.


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 F:\Users\Kristof\Desktop\Neuer Ordner\xampp\htdocs\test2.php on line 53
Die Mail konnte nicht versendet werden.

ist die fehlermeldung die ich jetzt bekomme.
d.h. es ist warscheinlich wirklich, dass ich gmx nicht als mailserver angeben kann .
Member: dog
dog Apr 12, 2010 at 08:25:50 (UTC)
Goto Top
Soso, das erklärt einiges.
Weil du nicht Linux sondern Windows als Server benutzt braucht PHP einen SMTP-Server und "localhost" ist keiner und GMX ist dafür auch nicht geeignet.

Du musst dir z.B. Mercury als Relay installieren, der lokal alle Mails annimt und mit Authentifizierung an einen Smarthost weiterleitet...
Member: masterG
masterG Apr 14, 2010 at 11:27:28 (UTC)
Goto Top
Ich würde für sowas die Klasse PHPMailer empfehlen da braucht man in der php.ini nicht so viel herum schreiben.
http://phpmailer.worxware.com/