[PHP] Formmailer

Only-7

Stammgast
Hi

Ich mache mir gerade ne Radiopage.
Dort hab ich ein Wunschforumlar gemacht, nun suchte ich mir dazu ein Formmailer weil es per Mail des "Wünschers" doof und nicht gut ist.
So habe ich diesen Code genommen:
Code:
<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'IhrName@provider.xy';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <IhrAndererName@provider.xy>';

# 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.provider.xy/IhrName/IhreSeite.htm';

# 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>
        <h1>Beispielformular</h1>
        <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>Sie können:</dt>
                <dd><input type="checkbox" name="kannwas[]" value="HTML" />HTML <input type="checkbox" name="kannwas[]" value="PHP" />PHP</dd>
                <dt>Sie sind:</dt>
                <dd><input type="radio" name="sexus" value="M" />Mann <input type="radio" name="sexus" value="Frau" />Frau</dd>
                <dt>Sie mögen:</dt>
                <dd><select name="Browser"><option value="Opera">Opera</option><option value="Mozilla">Mozilla</option></select></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>

Nun wenn ich das ganze angepasst habe im oberen Bereich und das ganze Teste erhalte ich diese Fehlermeldung:

Fehler 1 schrieb:
Warning: mail() [function.mail]: Failed to send mail. (Failed to resolve host address.) in /volume1/web/Radio/wunsch.php on line 50
Die Mail konnte nicht versendet werden.



Ich habe noch einen anderen Formmailer ausprobiert:

Code:
<html>
<head><title>Mail sender</title></head>
<body>
<form action="mail.php" method="POST">
<b>Email</b><br>
<input type="text" name="email" size=40>
<p><b>Subject</b><br>
<input type="text" name="subject" size=40>
<p><b>Message</b><br>
<textarea cols=40 rows=10 name="message"></textarea>
<p><input type="submit" value=" Send ">
</form>
</body>
</html>

PHP Datei:
Code:
<html>
<head><title>PHP Mail Sender</title></head>
<body>
<?php

# Retrieve the form data
$email      = $_POST['email'];
$subject    = $_POST['subject'];
$message = $_POST['message'];

# Sends mail and report success or failure
if (mail($email,$subject,$message)) {
  echo "<h4>Thank you for sending email</h4>";
} else {
  echo "<h4>Can't send email to $email</h4>";
}
?>
</body>
</html>

Habe hier die gleiche Fehlermeldung nur in einer anderen Zeile:
Fehlermeldung2 schrieb:
Warning: mail() [function.mail]: Failed to send mail. (Failed to resolve host address.) in /volume1/web/mail.php on line 12

Ich frage nun an was es liegt. Ich habe das ganze auf meinem NAS am laufen.
Dort ist die Webstation, MySQL und PHP eich aktiviert. Ist eine Synology DS-106(j).

Werde das ganze morgen noch mit XAMPP versuchen.

Gruss
 

Stromer92

Stammgast
Entschuldige die vieleicht etwas dumme Frage, aber wozu willst du das per Mail bekommen? Das ist doch recht sinnlos, lieber in eine Datenbankspeichern und dann mit einem Adminpanel auslsen?
 

Only-7

Stammgast
Sali

Hmm ja..werde das wohl eher als provisorium haben.

Werde mich wiedermal daran machen mit MySQL. Habs bisher nur genau einmal verwendet, im Geschäft.

Naja mal sehen an was es liegt. Mein Oberstift es könnte an der DNS Einstellung vom NAS liegen.

Melde mich wenn ich noch fragen haben sollte-->Neuer Thread da es nichts mehr mit einem Formmailer zu tun hat.

Gruss
 

Dragonlord

PCtipp-Moderation
Teammitglied
Mail

Versuch mal den folgenden PHP-Code:
Code:
/* Empfänger */
    $empfaenger = '[mail]@[mail]';
    
    /* Absender */
    $absender = $_POST['email'];
    
    /* Betreff */
    $subject = 'Kontaktformular von Website';
    
    /* Nachricht */
    $message = '<html>
    <head>
        <title>Kontaktformular</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <table>
        <tr>
            <td colspan="2"><b>Kontaktformular</b></td>
        </tr>
        <tr>
            <td>Name</td>
            <td>' . $_POST['name'] . '</td>
        </tr>
        <tr>
            <td>Vorname</td>
            <td>' . $_POST['vorname'] . '</td>
        </tr>
        <tr>
            <td>Firma</td>
            <td>' . $_POST['firma'] . '</td>
        </tr>
        <tr>
            <td>Strasse</td>
            <td>' . $_POST['strasse'] . '</td>
        </tr>
        <tr>
            <td>PLZ / Ort</td>
            <td>' . $_POST['plz'] . ' ' . $_POST['ort'] . '</td>
        </tr>
        <tr>
            <td>Land</td>
            <td>' . $_POST['land'] . '</td>
        </tr>
        <tr>
            <td>telefon</td>
            <td>' . $_POST['telefon'] . '</td>
        </tr>
        <tr>
            <td>erreichbar von</td>
            <td>' . $_POST['erreichbar'] . '</td>
        </tr>
        <tr>
            <td valign="top">Ich interessiere mich für ...</td>
            <td>' . $_POST['interesse'] . '</td>
        </tr>
        </table>
    </body>
    </html>';
    
    /* Baut Header der Mail zusammen */
    $headers = 'From:' . $absender . "\n";
    $headers .= 'X-Mailer: PHP/' . phpversion() . "\n";
    $headers .= "Content-type: text/html\n";
    
    function convertUmlaute($message)
    {
        //DIE UMLAUTE WERDEN KONVERTIERT  /////
        $pattern1="/ä/";
        $replace1="ä"; // &#228
        $message=preg_replace($pattern1,$replace1, $message);
        $pattern2="/ö/";
        $replace2="ö"; // &#246
        $message=preg_replace($pattern2,$replace2, $message);
        $pattern3="/ü/";
        $replace3="ü"; // &#252
        $message=preg_replace($pattern3,$replace3, $message);
        $pattern1a="/Ä/";
        $replace1a="Ä"; // &#196
        $message=preg_replace($pattern1a,$replace1a, $message);
        $pattern2a="/Ö/";
        $replace2a="Ö"; // &#214
        $message=preg_replace($pattern2a,$replace2a, $message);
        $pattern3a="/Ü/";
        $replace3a="Ü"; // &#220
        $message=preg_replace($pattern3a,$replace3a, $message);
        $pattern4="/É/";
        $replace4="&#Eacute;";
        $message=preg_replace($pattern4,$replace4, $message);
        $pattern4a="/é/";
        $replace4a="é";
        $message=preg_replace($pattern4a,$replace4a, $message);
        return $message;
    }

$message = convertUmlaute($message);
    
    /* Verschicken der Mail */
    @mail($empfaenger, $subject, $message, $headers);
Die Formularfelder/-namen musst Du halt umbauen.

lg Roger
 

Only-7

Stammgast
Tach

Hmm..nun kann ichs leider nicht testen, da ich nun Joomla und phpmyadmin(für den erstgebrauch; rest mache ich mit einem anderen tool) auf mein NAS geschmissen hab.

Werde meistens am Abend ein bisschen daran arbeiten. Ich denke ich werde das ganze über ein paar Tabellen machen. Ist ja nichts grosses. Bei fragen werde ich mich mal melden.

Gruss
 
Oben