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

标签 php javascript email

我收到来自 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';

关于从 postmaster@domain.co.uk 收到的 PHP 电子邮件表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891097/

相关文章:

email - Powershell 中一项 Outlook 规则的多个操作

php - 尝试使用带有 PHP 和 Prepared Statement 的 URL 链接嵌入 Youtube 视频

php - 只能通过手机访问的网址

php - 无法通过 PHP 的 INSERT 查询将详细信息插入表中

javascript - 为什么 Javascript 不能识别 HTML 类属性?

linux - 验证邮件状态 Bash 脚本

php - 更新数据库mysql php中的序列号

javascript - 我们可以在 Typescript 声明文件中使用全局符号吗?

javascript - UIWebView stringByEvaluatingJavaScriptFromString 调试

email - GMail 显示纯文本电子邮件而不是 HTML