2012-08-09 90 views
0

我從[email protected]收到我的電子郵件,而不是我指定的$ email。從postmaster[email protected]收到的PHP電子郵件表格

php的應該設置$電子郵件作爲發送電子郵件的人,但它進入到默認[email protected]

<?php 
    // Clean up the input values 
    foreach($_POST as $key => $value) { 
     if(ini_get('magic_quotes_gpc')) 
     $_POST[$key] = stripslashes($_POST[$key]); 

     $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key])); 
    } 

    mb_convert_encoding($string, "UTF-8"); //AUTO DETECT AND CONVERT 
    mb_convert_encoding($string, "UTF-8", "latin1"); 

    // Assign the input values to variables for easy reference 
    $name = $_POST["name"]; 
    $email = $_POST["email"]; 
    $telephone = $_POST["telephone"]; 
    $pages = $_POST["pages"]; 
    $budget = $_POST["budget"]; 
    $message = $_POST["message"]; 


    // Test input values for errors 
    $errors = array(); 
    if(strlen($name) < 2) { 
     if(!$name) { 
     $errors[] = "You must enter a name."; 
     } else { 
     $errors[] = "Name must be at least 2 characters."; 
     } 
    } 
    if(!$email) { 
     $errors[] = "You must enter an email."; 
    } else if(!validEmail($email)) { 
     $errors[] = "You must enter a valid email."; 
    } 
    if(strlen($telephone) < 6) { 
     if(!$telephone) { 
     $errors[] = "You must enter a phone number."; 
     } else { 
     $errors[] = "Message must be at least 6 characters. (include area code)"; 
     } 
    } 
    if(strlen($message) < 10) { 
     if(!$message) { 
     $errors[] = "You must enter a message."; 
     } else { 
     $errors[] = "Message must be at least 10 characters."; 
     } 
    } 

    if($errors) { 
     // Output errors and die with a failure message 
     $errortext = ""; 
     foreach($errors as $error) { 
     $errortext .= "<li>".$error."</li>"; 
     } 
     die("<span class='failure'>The following errors occured:<ul>". $errortext ."</ul></span>"); 
    } 

    // Send the email 
    $to = "[email protected]"; 
    $subject = "Quote Request: $name"; 
    $message = "Telephone Number: $telephone"."<br />"."Job Details: $message"."<br />"."Number of Pages Required: $pages"."<br />"."Clients Budget: $budget"; 
    $headers = 'Content-Type: text/html; charset=utf-8'; 
    "Quote Request From: $email"; 

    mail($to, $subject, $message, $headers); 

    // Die with a success message 
    die("<span class='success'>Success! Your message has been sent.</span>"); 

    // A function that checks to see if 
    // an email is valid 
    function validEmail($email) 
    { 
     $isValid = true; 
     $atIndex = strrpos($email, "@"); 
     if (is_bool($atIndex) && !$atIndex) 
     { 
      $isValid = false; 
     } 
     else 
     { 
      $domain = substr($email, $atIndex+1); 
      $local = substr($email, 0, $atIndex); 
      $localLen = strlen($local); 
      $domainLen = strlen($domain); 
      if ($localLen < 1 || $localLen > 64) 
      { 
      // local part length exceeded 
      $isValid = false; 
      } 
      else if ($domainLen < 1 || $domainLen > 255) 
      { 
      // domain part length exceeded 
      $isValid = false; 
      } 
      else if ($local[0] == '.' || $local[$localLen-1] == '.') 
      { 
      // local part starts or ends with '.' 
      $isValid = false; 
      } 
      else if (preg_match('/\\.\\./', $local)) 
      { 
      // local part has two consecutive dots 
      $isValid = false; 
      } 
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) 
      { 
      // character not valid in domain part 
      $isValid = false; 
      } 
      else if (preg_match('/\\.\\./', $domain)) 
      { 
      // domain part has two consecutive dots 
      $isValid = false; 
      } 
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', 
        str_replace("\\\\","",$local))) 
      { 
      // character not valid in local part unless 
      // local part is quoted 
      if (!preg_match('/^"(\\\\"|[^"])+"$/', 
       str_replace("\\\\","",$local))) 
      { 
       $isValid = false; 
      } 
      } 
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) 
      { 
      // domain not found in DNS 
      $isValid = false; 
      } 
     } 
     return $isValid; 
    } 

    ?> 

和JS

$(function() { 
     // Validate the contact form 
     $('#contactform').validate({ 
     // Specify what the errors should look like 
     // when they are dynamically added to the form 
     errorElement: "label", 
     wrapper: "td", 
     errorPlacement: function(error, element) { 
      error.insertBefore(element.parent().parent()); 
      error.wrap("<tr class='error'></tr>"); 
      $("<td></td>").insertBefore(error); 
     }, 

     // Add requirements to each of the fields 
     rules: { 
      name: { 
      required: true, 
      minlength: 2 
      }, 
      email: { 
      required: true, 
      email: true 
      }, 
      telephone: { 
      required: true, 
      minlength: 6 
      }, 
      message: { 
      required: true, 
      minlength: 10 
      } 
     }, 

     // Specify what error messages to display 
     // when the user does something horrid 
     messages: { 
      name: { 
      required: "Please enter your name.", 
      minlength: jQuery.format("At least {0} characters required.") 
      }, 
      email: { 
      required: "Please enter your email.", 
      email: "Please enter a valid email." 
      }, 
      telephone: { 
      required: "Please enter a phone number.", 
      minlength: jQuery.format("At least {0} characters required.") 

      }, 
      message: { 
      required: "Please enter a message.", 
      minlength: jQuery.format("At least {0} characters required.") 
      } 
     }, 

     // Use Ajax to send everything to quote.php 
     submitHandler: function(form) { 
      $("#send").attr("value", "Sending..."); 
      $(form).ajaxSubmit({ 
      target: "#response", 
      success: function(responseText, statusText, xhr, $form) { 
       $(form).slideUp("fast"); 
       $("#response").html(responseText).hide().slideDown("fast"); 
      } 
      }); 
      return false; 
     } 
     }); 
    }); 
+0

儘量不要使用PHP的郵件()作任何事情,它的效率很低。你可以用一個驗證過濾器替換你的電子郵件驗證(反正這是錯誤的)http://www.php.net/manual/en/filter.filters.validate.php – 2012-08-09 20:09:27

回答

1

沒有能力t o現在檢查,但我不認爲From地址正被添加到您的$ header變量中。

$headers = 'Content-Type: text/html; charset=utf-8';  
      "Quote Request From: $email"; 

這是一個設置我在PHP郵件手冊上找到的額外頭文件的例子。

// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Additional headers 
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n"; 
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 
$headers .= 'Bcc: [email protected]' . "\r\n"; 

http://www.php.net/manual/en/function.mail.php

你的...至少根據文檔。

$headers = 'Content-type: text/html; charset=utf-8' . "\r\n"; 
$headers .= "From: $email" . "\r\n"; 
+0

所以如何編輯我的。對不起,打擾你 – arranb22 2012-08-09 20:18:09

+0

@ arranb22我編輯了我的回覆以包含更改。我建議以這種方式列出它們,以便您可以確切地看到標題中的內容。 – 2012-08-09 20:24:57

+0

美麗它的工作 – arranb22 2012-08-09 20:26:45

3
​​

應該是:

$headers = 'Content-Type: text/html;\ncharset=utf-8;\nFrom: $email'; 
+0

我今天不參加投票,但會嘗試記得明天+1。 – Matt 2012-08-09 20:06:24

+0

@andrewsi我試過,但它仍然不會改變。我認爲你的想法是正確的,它只是我的錯誤 – arranb22 2012-08-09 20:13:41