从postmaster@domain.co.uk收到的PHP电子邮件表格(PHP email form received from postmaster@domain.co.uk)

我从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; } }); });

I receive my email from postmaster@domain.co.uk instead of the $email I specified.

the php should set $email as the person sending the email but It goes to the default 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; } ?>

and the 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; } }); });

最满意答案

现在没有能力检查,但我不认为From地址被添加到$ he​​ader变量中。

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

这是一个设置我在PHP Mail手册上找到的其他标题的示例。

// 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";

Don't have the ability to check right now, but I don't think the From address is being added to your $header variable.

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

Here is an example of setting up additional headers I found on the PHP Mail Manual.

// 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

Yours... at least according to the documentation.

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

更多推荐