Make contact form and send email in PHP
posted on July 3, 2006, 12:04 am
Having a contact form on your web site is vital when you need to know what your site visitors think about your web site. We will first create a simple contact form with 3 fields - Email address, Name, Comments. I will use a table to align the 3 fields and the Send button. Create a new file and paste the code below in it. Save it as test.php and upload it to your web server. Now, you have a web page (http://www.yourdomain.com/test.php) with a simple contact form on it.
<form action="test.php" method="post">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="29%" class="bodytext">Your name:</td>
<td width="71%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td class="bodytext">Email address:</td>
<td><input name="email" type="text" id="email" size="32"></td>
</tr>
<tr>
<td class="bodytext">Comment:</td>
<td><textarea name="comment" cols="45" rows="6" id="comment" class="bodytext"></textarea></td>
</tr>
<tr>
<td class="bodytext"> </td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
</tr>
</table>
</form>
Then we will need the actual PHP code which will send the email when the above form is submitted. We will need to define the email that the message should be sent to ($ToEmail) and also the subject for the message that will be sent ($EmailSubject). Change youremail@site.com to your email address where the message should be sent and also add an appropriate subject for you message. The $mailheader variable is used to define the email message header. We set the From, Reply-To and Content-type fields for the message. There are some more fields that can be used but for this example we will only use these 3. Depending on your server configuration you may need to have the From and Reply-to fields be a valid email address from your server.If you have a domain name mysite.com, then you should use a valid email address such as contact@mysite.com. In this example I am sending the email using the actual email address that is submitted via the form on site. Next all the data submitted via the web form is taken from the $_POST variable and saved in the $MESSAGE_BODY variable. Using the nl2br function you will make all the new lines in your comments box appear as new lines in your email message too. Having all the needed data for our email message we will use the mail() function which will send that email for us.
<?php
$ToEmail = 'youremail@site.com';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
All we have to do now is to combine the web form and email sending code into a single page. We will use an IF statement to check if the form has been submitted and if so it will send that email and will show a "Your message was sent" message on the screen instead of the web form.
<?php
if ($_POST["email"]<>'') {
$ToEmail = 'youremail@site.com';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
?>
Your message was sent
<?php
} else {
?>
<form action="test.php" method="post">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="29%" class="bodytext">Your name:</td>
<td width="71%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td class="bodytext">Email address:</td>
<td><input name="email" type="text" id="email" size="32"></td>
</tr>
<tr>
<td class="bodytext">Comment:</td>
<td><textarea name="comment" cols="45" rows="6" id="comment" class="bodytext"></textarea></td>
</tr>
<tr>
<td class="bodytext"> </td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
</tr>
</table>
</form>
<?php
};
?>
You can combine that contact form example with the CAPTCHA verification to prevent spammers from flooding your mail box. Did you check our Contact Form script?
| Satish posted on September 1, 2010, 4:43 am
|
| Very useful code...I had this up and running in few clicks. |
| aakash posted on August 4, 2010, 8:21 am
|
| excellent |
| Andy Black posted on July 28, 2010, 9:53 pm
|
| thanks so much, looked everywhere to try an get a php script to email my web form to me and this one actually does exactly what you want it to, superb thankyou |
| Chandara posted on July 14, 2010, 2:05 pm
|
| Please advice me about how to sent report to Marketing Manager. At the momen i work for Sales Manager. thanks |
| Dhvani posted on July 13, 2010, 4:24 pm
|
| I tried the same but I am getting HTTP 404 error. How are I resolve that error? |
| Jones posted on July 10, 2010, 2:31 pm
|
| thanks for the tutorial. IT got me started with my website. I would like to know how to add a verification code like the one you have on this comment. |
| moon posted on June 28, 2010, 4:47 pm
|
| I did not receive ay email when i create above mention test.php form. could you plz hep me to create this page for my website |
| Leif posted on May 21, 2010, 6:29 pm
|
| I have been having difficulty with my own script that seems to NOT send the From: address as $_Post[email] as it is replaced with the mail server name i.e. hostservername@domainname.com instead of having the persons email address variable. I assume this is not my coding but a hosting problem as I also used the code above and got the same result. |
| sourabh posted on March 22, 2010, 10:03 am
|
how to submit a html form in my email id using php or javascript.
thanks & regards
sourabh thukral
web designer
|
| George posted on March 15, 2010, 12:04 pm
|
Hey there, thank you for the code, works swell with my own form. I've encountered a small issue though. I've got the email form "hardwired" so to speak to send emails to a gmail account. When I open the email, I get everything fine, except that the line
"Content-type: text/html; charset=iso-8859-1"
Prints in the actual message. Removing this from the code does not affect the message, except of course this line doesn't print. Is this just to set the encoding to appear in a webpage(and therefore not needed for gmail?)? |