0

指定した $email ではなく、postmaster@domain.co.uk からメールが届きます。

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;
        }
      });
    });
4

2 に答える 2

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

次のようにする必要があります。

$headers = 'Content-Type: text/html;\ncharset=utf-8;\nFrom: $email';
于 2012-08-09T20:04:15.237 に答える
1

今は確認できませんが、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 <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";
于 2012-08-09T20:11:59.313 に答える