Link to home
Create AccountLog in
Avatar of Stacie
StacieFlag for United States of America

asked on

Contact form PHP

I have this regular contact php form being called from an .html page and I'm not sure what is wrong with it. It doesn't send any email.

	<form method="post" action="contact.php">
				<div class="field">
					<input type="text" name="name" class="text" />
				<div class="field">
					<label>Email: <span>*</span></label>
					<input type="text" name="email" class="text" />
				<div class="field">
					<label>Message: <span>*</span></label>
					<textarea name="message" class="text textarea" ></textarea>
				<div class="field">
					<input type="button" id="send" value="Send Message"/>
					<div class="loading"></div>

Open in new window

PHP file >


//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'];
$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 (!$message) $errors[count($errors)] = 'Please enter your message.'; 

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

	// ====== Your mail here  ====== //
	$to = "";
	// Sender
	$from = $name . ' <' . $email . '>';
	//subject and the html message
	$subject = 'Message from your website';	
	$message = '
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	<html xmlns="">
		<tr><td>Name:</td><td>' . $name . '</td></tr>
		<tr><td>Email:</td><td>' . $email . '</td></tr>
		<tr><td>Message:</td><td>' . nl2br($message) . '</td></tr>

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


Open in new window

Avatar of Marco Gasi
Marco Gasi
Flag of Spain image

Link to home
Create an account to see this answer
Signing up is free. No credit card required.
Create Account
This might be an issue with your webhost. For example, only will send email to a pop3 email address which is for your URL. I.E:
when the website is

In your code, you have it going to or something.
Before trying to debug this, talk to your webhost.
There were/are code problems with his pages.  I downloaded his code and made a working version but @marqusG identified the main problems.
Oh right, I didn't read his post before I replied.
Can I know why you gave a B grade? What was wrong in my comment?