这个php电子邮件脚本有什么问题?

问题描述

| 该电子邮件脚本可以正确执行,但我从未收到过电子邮件。它出什么问题了?对我来说很好。
<?PHP
if(isset($_POST[\'email\'])) {

    // EDIT THE 2 LInes BELOW AS required
    $email_to = \"[email protected]\";
    $email_subject = \"KISS Contact Form Response\";


    function died($error) {
        // your error code can go here
        echo \"We are very sorry,but there were error(s) found with the form you submitted. \";
        echo \"These errors appear below.<br /><br />\";
        echo $error.\"<br /><br />\";
        echo \"Please go back and fix these errors.<br /><br />\";
        die();
    }

    // validation expected data exists
    if(!isset($_POST[\'first_name\']) ||
        !isset($_POST[\'last_name\']) ||
        !isset($_POST[\'email\']) ||
        !isset($_POST[\'reason\']) ||
        !isset($_POST[\'comments\'])) {
        died(\'We are sorry,but there appears to be a problem with the form you submitted.\');       
    }

    $first_name = $_POST[\'first_name\']; // required
    $last_name = $_POST[\'last_name\']; // required
    $email_from = $_POST[\'email\']; // required
    $updated = $_POST[\'updated\']; // not required
    $reason = $_POST[\'reason\'];
    $comments = $_POST[\'comments\']; // required

    $error_message = \"\";
    $email_exp = \"/^[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}$/i\";
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= \'The Email Address you entered does not appear to be valid.<br />\';
  }
    $string_exp = \"/^[a-z .\'-]+$/\";
  if(!preg_match($string_exp,$first_name)) {
    $error_message .= \'The First Name you entered does not appear to be valid.<br />\';
  }
  if(!preg_match($string_exp,$last_name)) {
    $error_message .= \'The Last Name you entered does not appear to be valid.<br />\';
  }
  if(strlen($comments) < 2) {
    $error_message .= \'The Comments you entered do not appear to be valid.<br />\';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = \"Form details below.\\n\\n\";

    function clean_string($string) {
      $bad = array(\"content-type\",\"bcc:\",\"to:\",\"cc:\",\"href\");
      return str_replace($bad,\"\",$string);
    }

    $email_message .= \"First Name: \".clean_string($first_name).\"\\n\";
    $email_message .= \"Last Name: \".clean_string($last_name).\"\\n\";
    $email_message .= \"Email: \".clean_string($email_from).\"\\n\";
    $email_message .= \"Reason for contact: \".clean_string($reason).\"\\n\";
    $email_message .= \"Stay Updated: \".clean_string($updated).\"\\n\";
    $email_message .= \"Comments: \".clean_string($comments).\"\\n\";


// create email headers
$headers = \'From: \'.$email_from.\"\\r\\n\".
\'Reply-To: \'.$email_from.\"\\r\\n\" .
\'X-Mailer: PHP/\' . PHPversion();
@mail($email_to,$email_subject,$email_message,$headers);  

header(\'location: index2.PHP?op=Thank You\');

}
?>
    

解决方法

        您确定您的smtp配置正确吗?     ,        您的电子邮件发送代码正确。检查PHP.ini中的SMTP服务器设置
[mail function]
; For Win32 only.
SMTP = localhost (write your SMPT server ip address)
smtp_port = 25
或在本地计算机上配置SMTP以发送电子邮件。