2016-08-22 2 views
0

Also, ich habe versucht, eine Suche nach einer Antwort auf mein Problem in älteren Fragen zu tun, und ich war nicht abgedeckt, so mit mir und jeder Hilfe wird sehr geschätzt werden. Ich habe ein sehr einfaches HTML-Kontaktformular, das vom Benutzer einen Namen, eine E-Mail und dann den Nachrichtenbereich fragt. Das Problem ist, dass wenn der Benutzer seinen Namen in griechischen Buchstaben eingibt (da die Seite in griechischer Sprache ist), wird die Nachricht niemals geliefert. Ich habe es gründlich getestet und festgestellt, dass es kein Problem gibt, wenn im Textbereich griechische Zeichen vorkommen, das Problem tritt nur im Namensfeld auf. Der Code für mein Kontaktformular ist diese:Kontaktformular sendet die E-Mail nicht, wenn im Namensfeld griechische Zeichen verwendet werden

<form id="contact" method="post" action="mailer-backup.php" enctype="multipart/form-data" accept-charset="UTF-8"> 
    <input type="text" id="name" name="name" required placeholder="Όνομα"> 
    <input type="email" id="email" name="email" required placeholder="Email"> 
    <textarea id="message" name="message" required placeholder="Μήνυμα"></textarea> 
    <button id="submit" type="submit">Αποστολή</button> 
</form> 

Wie Sie sehen können, ruft eine externe PHP-Skript, das mit für einen ganzen Tag nach Unordnung, aber ohne ein positives Ergebnis sieht wie folgt aus:

<?php 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = strip_tags(trim($_POST["name"])); 
    $name = str_replace(array("\r","\n"),array(" "," "),$name); 
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
    $message = trim($_POST["message"]); 
    $options="-f [email protected]"; 

    if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     http_response_code(400); 
     echo "All fields are required, please fill <a href=\"\">the form</a> again."; 
     exit; 
    } 

    $recipient = "[email protected]"; 
    $name = '=?utf-8?b?' . base64_encode($_POST['name']) . '?='; 
    $from="From: $name<$email>\r\nReturn-path: $email"; 
    $subject = "New contact from $name - my-website.gr";  
    $email_content = "Name: $name\n"; 
    $email_content .= "Email: $email\n\n"; 
    $email_content .= "Message:\n$message\n"; 

    if (mail($recipient, '=?UTF-8?B?'.base64_encode($from).'?=', $subject, $email_content, $from, $options)) { 
     http_response_code(200); 
     echo "Thank You! Your message has been sent."; 
    } else { 
     http_response_code(500); 
     echo "Tragic! Something went wrong and we couldn't send your message."; 
    } 
    } else { 
    echo "There was a problem with your submission, please try again."; 
    } 
?> 

Ich verbrachte den ganzen Tag damit, alle möglichen Experimente zu machen, aber da ich kein Programmierer bin, habe ich es nicht geschafft. Für jede Art von Menschen, die mit einer möglichen Lösung reagieren, bitte denken Sie daran, ich bin kein Programmierer. Vielen Dank im Voraus

+0

Forgot zu sagen, dass die Fehlermeldung, die ich bekomme, sobald das Formular reicht, ist die " Tragic! Etwas schief gelaufen und wir konnten Ihre Nachricht nicht senden.", So ist es die 500 Fehler. –

+0

Ich weiß, dass dies möglicherweise nicht mit der Behebung dieses Problems zusammenhängt. aber vielleicht ist das problem mit php email. versuchen Sie es mit PHPMailer –

Antwort

0

Ich denke, Sie haben tatsächlich ein Problem mit dem Mail-Befehl Aufruf Argumente - sieht aus wie Sie Ihre Absenderinformationen als Ihr zweites Argument, während es Betreffzeile sollte.

Also, wenn ich Ihren Anruf mit

mail($recipient, $subject, $email_content, $from, $options) 

ersetzt es funktionierte für mich ganz gut mit UTF im Namensfeld.

+0

Gott segne dich Andrei, das hat den Trick !!! –

Verwandte Themen