为什么我在通过PHP发送电子邮件时遇到问题? [重复]

Possible Duplicate:
Email from PHP in Windows Azure

I'm new to PHP but I'm starting to see the value in it for very simple things and I'm hoping you can shed some light on why the following code isn't working. In other words, I never receive the email. The first code block is the PHP code I have server side and the second code block is the form that's submitting it to that PHP code.

I'm hosting this website currently in the Azure cloud so it's running on Microsoft's servers and I've verified that PHP v5.3 is running.

PHP Code

<?php
  if(isset($_POST['email'])) {
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "some_email_address";
    $email_subject = "Contact Form Submitted";
    function died($error) {
      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 <a href='javascript:history.go(-1)'>go back</a> 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['telephone']) ||
      !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
      $telephone = $_POST['telephone']; // not required
      $comments = $_POST['comments']; // required
      $error_message = "";
      $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
      if(!preg_match($email_exp,$email_from)) {
        $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
      }
      $string_exp = "/^[A-Za-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.

";
      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)."
";
      $email_message .= "Last Name: ".clean_string($last_name)."
";
      $email_message .= "Email: ".clean_string($email_from)."
";
      $email_message .= "Telephone: ".clean_string($telephone)."
";
      $email_message .= "Comments: ".clean_string($comments)."
";
      ini_set("sendmail_from", $email_from);
      // create email headers
      $headers = 'From: '.$email_from."
".
       'Reply-To: '.$email_from."
" .
       'X-Mailer: PHP/' . phpversion();
      @mail($email_to, $email_subject, $email_message, $headers);
   }
?>

Form Submitting to PHP

<form name="contactform" method="post" action="send_form_email.php">
  <table width="450px">
    <tr>
      <td valign="top">
        <label for="first_name">First Name *</label>
      </td>
      <td valign="top">
        <input  type="text" name="first_name" maxlength="50" size="30">
      </td>
    </tr>
    <tr>
      <td valign="top">
        <label for="last_name">Last Name *</label>
      </td>
      <td valign="top">
        <input  type="text" name="last_name" maxlength="50" size="30">
      </td>
    </tr>
    <tr>
      <td valign="top">
        <label for="email">Email Address *</label>
      </td>
      <td valign="top">
        <input  type="text" name="email" maxlength="80" size="30">
      </td>
    </tr>
    <tr>
      <td valign="top">
        <label for="telephone">Telephone Number</label>
      </td>
      <td valign="top">
        <input  type="text" name="telephone" maxlength="30" size="30">
      </td>
    </tr>
    <tr>
      <td valign="top">
        <label for="comments">Comments *</label>
      </td>
      <td valign="top">
        <textarea  name="comments" maxlength="1000" cols="25" rows="6"></textarea>
      </td>
    </tr>
    <tr>
      <td colspan="2" style="text-align:center">
        <input type="submit" value="Submit" style="float: left;">
      </td>
    </tr>
  </table>
</form>
  1. You don't need to call ini_set("sendmail_from", $email_from); as you are setting the from email address in the headers
  2. You have called @mail. Unless you're using the Atmail library, which you haven't called, this will not work. You should remove the @ to use the default PHP mail function
  3. Confirm that sendmail is properly configured on your server if it still doesn't work

First try to send simple email. Check whether are you getting it or not,

like below

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "
" .
    'Reply-To: webmaster@example.com' . "
" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

If it works add content type text/html to your code and check