0

I am wanting to send the form data entered on my website to my personal email. Here is the HTML form I'm using and the PHP code I'm using, I am new to this and can't seem to get it to work.

<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">
        </td>
        </tr>
    </table>
</form>

Here is the PHP code I'm using..

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

    $email_to = "email";

    $email_subject = "One Trinity Green Site Comments";

    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 go back and fix these errors.<br /><br />";

        die();
    }

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

$headers = 'From: '.$email_from."\r\n".

'Reply-To: '.$email_from."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);

?>

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

<?php
}
?>
xylar
  • 7,433
  • 17
  • 55
  • 100
Cobby
  • 19
  • 3
  • Do write the PHP code at the top i.e above your html. And please specify the exact issue you are facing – Zameer Khan Apr 03 '14 at 08:47
  • 1
    Remove the `@` infront of your `mail()` function. This symbol suppresses errors, which you're probably getting. – Gerben Jacobs Apr 03 '14 at 08:50
  • Unless you have a custom method called `died()` you should replace it with `die()` – xylar Apr 03 '14 at 08:52
  • Why the `@mail()` take the `@`out ? Have you actually enabled this feature in php.ini? usually this is enabled by default but just a though.. – Scott Apr 03 '14 at 08:55
  • Check out PHPMailer, this might make things easier for you https://github.com/Synchro/PHPMailer some tutorials http://phpmailer.worxware.com/index.php?pg=tutorial#1 – Scott Apr 03 '14 at 08:57
  • Never use @ before any action. If you waiting that there can be error\crash you should do simple checker, but never use @ - it's monkey code. (Just a suggestion). – user1954544 Apr 03 '14 at 10:22

2 Answers2

1

The solution:

HTML:

    <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">
        </td>
        </tr>
    </table>
</form>

PHP:

 <?php
 //var_dump($_POST);
if (isset($_POST["first_name"])) //you can add more things to check here
    {
    $subject = "Title";
    $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 = "";
    $message = "First name= $first_name" . "\r\n" . "Last name= $last_name" . "\r\n" . "Email from= $email_from" . "\r\n" . "Telephone number= $telephone" . "\r\n" . "Comments= $comments";          

    //echo "$message <br>";
    $message = wordwrap($message, 70);
    $subject = wordwrap($subject, 70);
    mail("YOUR EMAIL ADDRESS HERE",$subject,$message,"subject: $subject\n");
    echo "Thanks";
}

  ?>

Demo: here
The demo sends the mail to mail you entered in the form.

This does not include checking the required fields. This is just an example on how send the mail itself. If you want to i can add that to my solution.

Jouke
  • 459
  • 1
  • 7
  • 20
0

Use http://swiftmailer.org/ to sent mail. Mostly troubles always with server setup. So you can avoid setup and do it right in php code using SwiftMail. I think trouble is in setup of sendmail.

PS: Before using function mail() you have to setup it. http://www.quackit.com/php/tutorial/php_mail_configuration.cfm first link from google search.

ADDED

http://phpmailer.worxware.com/index.php?pg=tutorial#1 nice one too, someone've already showed it here.

user1954544
  • 1,619
  • 5
  • 26
  • 53