php: sending mail from contact keeps throwing error
<p>I am trying to use the below code to handle customer contacting via my site. It is not working and error is caught. the message I get "Sorry, unexpected error. Please try again later".</p>

<p>The html form and the php handler are included below. both are in separate pages, contact.php and contact_handle.php respectively. </p>

<p>form:</p>

<pre><code>  &lt;div id="contact-form"&gt;
                &lt;form method="post" action="contact_handle.php"&gt;

                    &lt;div class="field"&gt;
                        &lt;label&gt;Name:&lt;/label&gt;
                        &lt;input type="text" name="name" class="text" /&gt;
                    &lt;/div&gt;

                    &lt;div class="field"&gt;
                        &lt;label&gt;Email: &lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
                        &lt;input type="text" name="email" class="text" /&gt;
                    &lt;/div&gt;

                    &lt;div class="field"&gt;
                        &lt;label&gt;Subject: &lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
                        &lt;input type="text" name="subject" class="text" /&gt;
                    &lt;/div&gt;

                    &lt;div class="field"&gt;
                        &lt;label&gt;Mobile No: &lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
                        &lt;input type="text" name="mobile" class="text" /&gt;
                    &lt;/div&gt;

                    &lt;div class="field"&gt;
                        &lt;label&gt;Message: &lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
                        &lt;textarea name="message" class="text textarea" &gt;&lt;/textarea&gt;
                    &lt;/div&gt;

                    &lt;div class="field"&gt;
                        &lt;input type="button" id="send" value="Send Message"/&gt;
                        &lt;div class="loading"&gt;&lt;/div&gt;
                    &lt;/div&gt;

                &lt;/form&gt;
&lt;/div
</code></pre>

<p>Now the handler is:</p>

<pre><code>&lt;?php

//Retrieve form data. 
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
$subject = ($_GET['subject']) ?$_GET['subject'] : $_POST['subject'];
$mobile = ($_GET['mobile']) ?$_GET['mobile'] : $_POST['mobile'];
$message = ($_GET['message']) ?$_GET['message'] : $_POST['message'];

//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post=1;

//Simple server side validation for POST data, of course, you should validate the email
if (!$name) $errors[count($errors)] = 'Please enter your name.';
if (!$email) $errors[count($errors)] = 'Please enter your email.'; 
if (!$subject) $errors[count($errors)] = 'Please enter your subject.';
if (!$mobile) $errors[count($errors)] = 'Please enter your mobile No.';
if (!$message) $errors[count($errors)] = 'Please enter your message.'; 

//If the errors array is empty, send the mail
if (!$errors) {

    // ====== Your mail here  ====== //
    $to = 'fsa@gmail.com';

    // Sender
    $from = $name . ' &lt;' . $email . '&gt;';

    //subject and the html message
    $subject = 'Message from www.iso.com contact form'; 
    $message = '
    &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;head&gt;&lt;/head&gt;
    &lt;body&gt;
    &lt;table&gt;
        &lt;tr&gt;&lt;td&gt;Name:&lt;/td&gt;&lt;td&gt;' . $name . '&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Email:&lt;/td&gt;&lt;td&gt;' . $email . '&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Subject:&lt;/td&gt;&lt;td&gt;' . $subject . '&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Mobile No.:&lt;/td&gt;&lt;td&gt;' . $mobile . '&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Message:&lt;/td&gt;&lt;td&gt;' . nl2br($message) . '&lt;/td&gt;&lt;/tr&gt;
    &lt;/table&gt;
    &lt;/body&gt;
    &lt;/html&gt;';

    // Send the mail
    $result = sendmail($to, $subject, $message, $from);


    //if POST was used, display the message straight away
    if ($_POST) {
        if ($result) echo 'Thank you! We have received your message.';
        else echo 'Sorry, unexpected error. Please try again later';

    //else if GET was used, return the boolean value so that 
    //ajax script can react accordingly
    //1 means success, 0 means failed
    } else {
        echo $result;   
    }

// If the errors array has values
} else {}


// Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $headers .= 'From: ' . $from . "\r\n";

    $result = mail($to,$subject,$message,$headers);

    if ($result) return 1;
    else return 0;
}

?&gt;
</code></pre>

<p>I hope you can help spot the error that I've missed.</p>

<p>Thanks a lot :)</p>
