2016-04-03 3 views
1

Wie kann ich ein Kontaktformular erstellen, das die Informationen tatsächlich an meine E-Mail sendet mit HTML, PHP und/oder sogar js? Ich habe diesen Code versucht, aber es schien nicht zu funktionieren.Wie erstelle ich ein HTML/PHP-Kontaktformular, das an meine E-Mail gesendet wird?

Offensichtlich habe ich meine tatsächliche E-Mail in den Code verwendet und habe es nur für diese geändert.

<form name="contactform" method="post" action="send_form_email.php"> 
 
     <table width="450px"> 
 
      <tr> 
 
      <td valign="top"><label for="first_name">First Name *</label></td> 
 
      <td valign="top"><input type="text" name="first_name" maxlength="50" size="30"></td> 
 
      </tr> 
 
      <tr> 
 
      <td valign="top"><label for="last_name"> Last Name *</label> </td> 
 
      <td valign="top"><input type="text" name="last_name" maxlength="50" size="30"></td> 
 
      </tr> 
 
      <tr> 
 
      <td valign="top"><label for="email">Email Address *</label></td> 
 
      <td valign="top"><input type="text" name="email" maxlength="80" size="30"></td> 
 
      </tr> 
 
      <tr> 
 
      <td valign="top"><label for="telephone">Telephone Number</label></td> 
 
      <td valign="top"><input type="text" name="telephone" maxlength="30" size="30"></td> 
 
      </tr> 
 
      <tr> 
 
      <td valign="top"><label for="comments">Comments *</label></td> 
 
      <td valign="top"><textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea></td> 
 
      </tr> 
 
      <tr> 
 
      <td colspan="2" style="text-align:center"><input type="submit" value="Submit"> 
 
      </td> 
 
      </tr> 
 
     </table> 
 
     </form> 
 

 

 
<?php 
 
    
 
if(isset($_POST['email'])) { 
 
    
 
     
 
    
 
    
 
    $email_to = "[email protected]"; 
 
    
 
    $email_subject = "CONTACT FROM WEBSITE"; 
 
    
 
     
 
    
 
     
 
    
 
    function died($error) { 
 
    
 
     // your error code can go here 
 
    
 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
 
    
 
     echo "These errors appear below.<br /><br />"; 
 
    
 
     echo $error."<br /><br />"; 
 
    
 
     echo "Please go back and fix these errors.<br /><br />"; 
 
    
 
     die(); 
 
    
 
    } 
 
    
 
     
 
    
 
    // validation expected data exists 
 
    
 
    if(!isset($_POST['first_name']) || 
 
    
 
     !isset($_POST['last_name']) || 
 
    
 
     !isset($_POST['email']) || 
 
    
 
     !isset($_POST['telephone']) || 
 
    
 
     !isset($_POST['comments'])) { 
 
    
 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
 
    
 
    } 
 
    
 
     
 
    
 
    $first_name = $_POST['first_name']; // required 
 
    
 
    $last_name = $_POST['last_name']; // required 
 
    
 
    $email_from = $_POST['email']; // required 
 
    
 
    $telephone = $_POST['telephone']; // not required 
 
    
 
    $comments = $_POST['comments']; // required 
 
    
 
     
 
    
 
    $error_message = ""; 
 
    
 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
 
    
 
    if(!preg_match($email_exp,$email_from)) { 
 
    
 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
 
    
 
    } 
 
    
 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
 
    
 
    if(!preg_match($string_exp,$first_name)) { 
 
    
 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
 
    
 
    } 
 
    
 
    if(!preg_match($string_exp,$last_name)) { 
 
    
 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
 
    
 
    } 
 
    
 
    if(strlen($comments) < 2) { 
 
    
 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
 
    
 
    } 
 
    
 
    if(strlen($error_message) > 0) { 
 
    
 
    died($error_message); 
 
    
 
    } 
 
    
 
    $email_message = "Form details below.\n\n"; 
 
    
 
     
 
    
 
    function clean_string($string) { 
 
    
 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
 
    
 
     return str_replace($bad,"",$string); 
 
    
 
    } 
 
    
 
     
 
    
 
    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
 
    
 
    $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
 
    
 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
 
    
 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
 
    
 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 
 
    
 
    
 
    
 
$headers = 'From: '.$email_from."\r\n". 
 
    
 
'Reply-To: '.$email_from."\r\n" . 
 
    
 
'X-Mailer: PHP/' . phpversion(); 
 
    
 
@mail($email_to, $email_subject, $email_message, $headers); 
 
    
 
?> 
 
    
 

 
    
 
    
 
    
 
<?php 
 
    
 
} 
 
    
 
?>

+1

Bitte zeigen Sie, was Sie bisher versucht haben. –

+0

Diese Frage wäre nützlicher, wenn Sie den Code in ein MWE verwandeln würden. Das Problem und die Antwort wären die gleichen wie jetzt. – PetaspeedBeaver

Antwort

1

ich Ihren Code und getestet kopiert haben. Das ist für mich gearbeitet:

<?php 
    error_reporting(E_ALL); 
?> 
<form name="contactform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <table width="450px"> 
     <tr> 
     <td valign="top"><label for="first_name">First Name *</label></td> 
     <td valign="top"><input type="text" name="first_name" maxlength="50" size="30"></td> 
     </tr> 
     <tr> 
     <td valign="top"><label for="last_name"> Last Name *</label> </td> 
     <td valign="top"><input type="text" name="last_name" maxlength="50" size="30"></td> 
     </tr> 
     <tr> 
     <td valign="top"><label for="email">Email Address *</label></td> 
     <td valign="top"><input type="text" name="email" maxlength="80" size="30"></td> 
     </tr> 
     <tr> 
     <td valign="top"><label for="telephone">Telephone Number</label></td> 
     <td valign="top"><input type="text" name="telephone" maxlength="30" size="30"></td> 
     </tr> 
     <tr> 
     <td valign="top"><label for="comments">Comments *</label></td> 
     <td valign="top"><textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea></td> 
     </tr> 
     <tr> 
     <td colspan="2" style="text-align:center"><input type="submit" value="Submit"> 
     </td> 
     </tr> 
    </table> 
    </form> 


<?php 

if(isset($_POST['email'])) { 

$email_to = "[email protected]"; 

$email_subject = "CONTACT FROM WEBSITE"; 

function died($error) { 

    // your error code can go here 

    echo "We are very sorry, but there were error(s) found with the form you submitted. "; 

    echo "These errors appear below.<br /><br />"; 

    echo $error."<br /><br />"; 

    echo "Please go back and fix these errors.<br /><br />"; 

    exit(); 

} 



// validation expected data exists 

if(!isset($_POST['first_name']) || 

    !isset($_POST['last_name']) || 

    !isset($_POST['email']) || 

    !isset($_POST['telephone']) || 

    !isset($_POST['comments'])) { 

    died('We are sorry, but there appears to be a problem with the form you submitted.'); 

} 



$first_name = $_POST['first_name']; // required 
$last_name = $_POST['last_name']; // required 
$email_from = $_POST['email']; // required 
$telephone = $_POST['telephone']; // not required 
$comments = $_POST['comments']; // required 

$error_message = ""; 

$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 

    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 

    $string_exp = "/^[A-Za-z .'-]+$/"; 

    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 

if(!preg_match($string_exp,$last_name)) { 
$error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 

    if(strlen($error_message) > 0) { 
    echo $error_message; 
    exit(); 

    } 

    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 

     $bad = array("content-type","bcc:","to:","cc:","href"); 

     return str_replace($bad,"",$string); 

    } 

    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 

    $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'X-Mailer: PHP/' . phpversion(); 

    mail($email_to, $email_subject, $email_message, $headers); 

} 

?> 

Geändert:

  • Formular Aktion
  • die() => exit()
  • hinzugefügt E_ALL (Linie 1)

Das etwa ist es hat der Code für mich funktioniert. E-Mail wurde gesendet. So funktioniert es :)

Ich hoffe es hilft!

EDIT: Die Verwendung von lokalen Servern wie XAMPP oder WAMP wird Probleme verursachen, da SMTP normalerweise nicht ordnungsgemäß aus der Box eingerichtet ist. Wenn Sie dies auf einem Live-Server testen, funktioniert die Funktion mail().

+0

Immer noch nichts in meinem Posteingang, benutze ich xampp obwohl, könnte dies der Grund sein? – SCJ

+1

Ja, Software wie XAMPP und WAMP sind lokale Server. Sie haben SMTP nicht ordnungsgemäß richtig konfiguriert. Dies funktioniert auf einem Live-Server. – Samih

1

ich Ihren Code überprüft haben, es funktioniert gut und ich bekommen eine E-Mail von Ihrem code..here die E-Mail gab unten

Form details below. 

First Name: khaledur 
Last Name: rahman 
Email: [email protected] 
Telephone: 00000000000 
Comments: Hello its test email 

Warum Sie @ in mail() Funktion nutzen? Sie können keinen Fehler finden.

Wenn Sie E-Mail geschickt von localhost dieses prüfen

  1. Für XAMPP link
  2. Für WAMP link