2016-05-03 9 views
0

Ich habe gesehen, dass es hier auf StackOverflow viele ähnliche Fragen gibt, aber ich glaube, ich konnte die richtige Lösung für meine Frage noch nicht finden.Konfigurationsproblem mit PHP-Kontaktformular

Das Problem, was ich mit E-Mail Funktionalität ist mit Empfang - im Grunde ein kontaktieren Sie uns-Bereich der Website, wo Benutzer in html basierter Form und send message und diese Nachricht wird drücken füllen können per E-Mail verschickt werden.

Ich mache meine Entwicklung mit XAMPP und den Apache-Server und Mercury auf localhost. Auch wenn die Validierung Erfolg zeigt - E-Mails kommen nicht durch.

  1. habe ich versucht, method="post" zu HTML-Abschnitt hinzuzufügen, aber herausgefunden, dass type: "POST" bereits enthalten ist.
  2. Doppelt überprüft, welchen Port Mercury verwendet und verglichen es mit dem in php.ini erwähnten, beide sind auf 25 eingestellt.
  3. Ich habe auch versucht, zu Bitbucket pages und Azure bereitstellen, um von localhost auf Live-Hosting zu verschieben.

Ich habe diese sehr detaillierte post sorgfältig durchgelesen. Die Idee, die Website auf Live-Hosting hochzuladen, kam von diesem Beitrag.

<?php 
$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = trim($_POST['message']); 


if(isset($name) && isset($email)) { 

    // Avoid Email Injection and Mail Form Script Hijacking 
    $pattern = "/(content-type|bcc:|cc:|to:)/i"; 
    if(preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message)) { 
     exit; 
    } 

    $to = "[email protected]"; 
    $sub = "$name from Cv"; 
    // HTML Elements for Email Body 
    $body = <<<EOD 
    <strong>Name:</strong> $name <br> 
    <strong>Email:</strong> <a href="mailto:$email?subject=feedback" "email me">$email</a> <br> <br> 
    <strong>Message:</strong> $message <br> 
EOD; 

    $headers = "From: $name <$email>\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    mail($to, $sub, $body, $headers); 
} 

?> 

$("#contact-form-1").submit(function(e) { 
 
    e.preventDefault(); 
 
    var success = $(this).find('.email-success'), 
 
     failed = $(this).find('.email-failed'), 
 
     loader = $(this).find('.email-loading'), 
 
     postUrl = $(this).attr('action'); 
 

 
    success.fadeOut(100); failed.fadeOut(100); loader.fadeOut(100); 
 

 
    var data = { 
 
    name: $(this).find('.contact-name').val(), 
 
    email: $(this).find('.contact-email').val(), 
 
    message: $(this).find('.contact-message').val() 
 
    }; 
 

 
    if (isValidEmail(data['email']) && (data['message'].length > 1) && (data['name'].length > 1)) { 
 
    $.ajax({ 
 
     type: "POST", 
 
     url: postUrl, 
 
     data: data, 
 
     beforeSend: function() { 
 
     loader.fadeIn(500); 
 
     }, 
 
     success: function(data) { 
 
     loader.fadeOut(500); 
 
     failed.fadeOut(500); 
 
     success.delay(500).fadeIn(500); 
 
     }, 
 
     error: function(xhr) { // if error occured 
 
     loader.fadeOut(500); 
 
     success.fadeOut(500); 
 
     failed.delay(500).fadeIn(500); 
 
     }, 
 
     complete: function() { 
 
     loader.fadeOut(500); 
 
     } 
 
    }); 
 
    } else { 
 
    loader.fadeOut(500); 
 
    failed.delay(500).fadeIn(500); 
 
    success.fadeOut(500); 
 
    } 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form id="contact-form-1" action="sendmail.php" method="POST"> 
 
    
 
    <input class="contact-name form-control" type="text" name="name" placeholder="FULL NAME"> 
 
    <input class="contact-email form-control" type="text" name="email" placeholder="EMAIL"> 
 
    <textarea class="contact-message form-control" name="message" placeholder="MESSAGE" rows="5"></textarea> 
 
    <button class="btn">SEND MESSAGE</button> 
 

 
</form>

HINWEIS: Ich habe diesen Code von mir nicht schreiben, wie es von den Vorlagenersteller zur Verfügung gestellt wurde. Ich habe den Template-Ersteller kontaktiert und eine absolut schreckliche Unterstützung erfahren. Dies ist der Hauptgrund für meinen Beitrag hier.

+0

Nun, Sie überprüfen nicht, ob die E-Mail erfolgreich gesendet wurde oder nicht, – Epodax

+0

@Epodax Ich habe Validierung hinzugefügt. Bitte sehen Sie sich den aktualisierten Beitrag an. – alljamin

+0

Haben Sie eine Fehlermeldung? – D14n4

Antwort

0

Beim Suchen, mehr Forschung und Fragen rund um herauszufinden, fand ich this extrem nützliche Antwort, was schließlich meine lokale XAMPP-Konfiguration behoben. Es war also nichts falsch mit dem Code selbst, aber meine Konfiguration war das Problem.

WICHTIG: versuchen, die Schritte so nah wie möglich zu folgen, einfach ; fehlen kann im Endergebnis den großen Unterschied machen. Also überprüfe jeden Schritt, wenn etwas kaputt zu sein scheint.

Auch eine andere sehr aufschlussreich und interessant zu lesen post.