从 postmaster@domain.co.uk 收到的 PHP 电子邮件表单

PHP email form received from postmaster@domain.co.uk

本文关键字:PHP 电子邮件 表单 postmaster@domain co uk      更新时间:2023-09-26

我收到来自 postmaster@domain.co.uk 的电子邮件,而不是我指定的$email。

PHP 应将$email设置为发送电子邮件的人,但它会转到默认 postmaster@domain.co.uk

    <?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 = "contact@dorsetdesigns.co.uk";
    $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;
        }
      });
    });
$headers = 'Content-Type: text/html; charset=utf-8';
"Quote Request From: $email";

应该是:

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

现在无法检查,但我认为发件人地址没有添加到您的$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 <mary@example.com>, Kelly <kelly@example.com>' . "'r'n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "'r'n";
$headers .= 'Cc: birthdayarchive@example.com' . "'r'n";
$headers .= 'Bcc: birthdaycheck@example.com' . "'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";