2012-07-02 215 views
0

http://www.dorsetdesigns.co.uk/contact.htmlPhp电子邮件脚本不发送

尝试使用表格,它不会发送电子邮件给我。我使用与域

<?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])); 
} 

// Assign the input values to variables for easy reference 
$name = $_POST["name"]; 
$email = $_POST["email"]; 
$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($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 = "Contact Form: $name"; 
$message = "$message"; 
$headers = "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; 
    } 

    ?> 

相关的邮件帐户此代码提交表单和下面的代码的形式有这么多的代码的原因是为了使PHP的安全。我觉得不应该有在代码中的任何错误,但是这可能是问题

<form id="contactform" action="processForm.php" method="post"> 
    <table> 
     <tr> 
     <td><label for="name">Name:</label></td> 
     <td><input type="text" id="name" name="name" /></td> 
     </tr> 
     <tr> 
     <td><label for="email">Email:</label></td> 
     <td><input type="text" id="email" name="email" /></td> 
     </tr> 
     <tr> 
     <td><label for="message">Message:</label></td> 
     <td><textarea id="message" name="message" rows="5" cols="20"></textarea></td> 
     </tr> 
     <tr> 
     <td></td> 
     <td><input type="submit" value="Send!" id="send" /></td> 
     </tr> 
    </table> 
    </form> 
+0

你介意给我们展示一些代码吗? – skos

+0

发布一些代码。 – 2012-07-02 13:35:35

+0

确定一秒... – arranb

回答

2

看来,该文件processForm.php是不存在的,它应该是。

send单击它尝试通过调用URL提交表单:http://www.dorsetdesigns.co.uk/processForm.php

和响应是这样的:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL /processForm.php was not found on this server.</p> 
</body></html> 

因此,检查的文件路径,它肯定会工作。

+0

好吧,我看到我做了什么。虐待它 – arranb

+0

它现在感谢,并由于这样一个简单的错误 – arranb

+0

@arranb你欢迎。 – Sanjay