user3594895
user3594895

Reputation: 43

emailing the contents of a form

How would I create a form in HTML that would email the content of the form to an email? Here is what I have.

  <form action="mailto:[email protected]" enctype="text/plain" method="post">
  <input name = "subject" placeholder = "Your Name"></input>
  <br>
  <textarea name = "message" placeholder = "Email Us." style = "height:100px;"></textarea>
  <input type="submit" value="Submit" placeholder = "Submit"></input>
  </form>

could I do this solely in HTML with the mailto: action? or would i need some php like

    mail('[email protected]', $_POST['subject'], $_POST['message']);

Any suggestions?

Upvotes: 0

Views: 77

Answers (2)

Richard Czechowski
Richard Czechowski

Reputation: 433

So there is all kind of wrong in what I'm about to post. Such as don't use tables to style your forms, etc. But I'm taking this off another site so it'll be simple. What you need is a mix of html for the form and php for the mailing.

<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">
<a href="http://www.freecontactform.com/email_form.php">Email Form</a>

</td>

</tr>

</table>

So there is your basic form.

Here is your basic php. Place it in the same directory as your .html file: send_form_email.php (you must use this filename exactly) Make sure to edit the parts indicated with your email and subject line.

<?php

if(isset($_POST['email'])) {



// EDIT THE 2 LINES BELOW AS REQUIRED

$email_to = "[email protected]";

$email_subject = "Your email subject line";





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['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.\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 .= "Telephone: ".clean_string($telephone)."\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);  

?>



<!-- include your own success html here -->



Thank you for contacting us. We will be in touch with you very soon.



<?php

}

?>

If you need to see this tutorial in it's entirety, it's located here:http://www.freecontactform.com/email_form.php In order to make a custom form it is pretty easy to edit the html and related php elements, but if you don't know any php, etc. I'd just stick to the premade forms.

Upvotes: 1

Isuru Madusanka
Isuru Madusanka

Reputation: 373

Please try to use header as well to sending a email.

<?php
$to      = '[email protected]';
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = 'From: [email protected]' . "\r\n";
$retval = mail($to, $subject, $message, $headers);
if( $retval == true )  
{
   echo "Message sent successfully...";
}
else
{
   echo "Message could not be sent...";
}
?> 

Upvotes: 1

Related Questions