0

I try to do contactUs page in my web (Now I work with xampp and netbeans on my localhost)

File contactUs.php:

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

  </table>
</form>

File send_form_email.php:

<?php
if (isset($_POST['email'])) {
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "my@gmail.com";
    $email_subject = "ssss";

    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();

  // send the email
  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
}
?>

My problem is that it is not working. I'm filling out the form and do Submit, get the success message, but do not receive an e-mail in my Gmail account.

Is there anything else I need? I guess I need to define it from where to send the form; define something in file php.ini maybe?

Teemu Leisti
  • 3,750
  • 2
  • 30
  • 39
shlomi
  • 523
  • 3
  • 13
  • 26

3 Answers3

0

Did you configure your e-mail in php?

http://php.net/manual/en/mail.configuration.php

You can check your configuration with the phpinfo(); change your php.ini and you can use the information your internet provider provided for outgoing e-mail by adjusting the SMTP options etc (this only works for windows) you could use the information your ISP provided to you for your internet connection.

Second option is using sendmail to send your e-mail so you can use gmail as your smtp server for xampp it's explained here: (sendmail is allready build-in in xampp) How to configure XAMPP to send mail from localhost?

Community
  • 1
  • 1
Sander Visser
  • 4,144
  • 1
  • 31
  • 42
  • Hi, I didn't configure the php.ini. I need to change to something like this? SMTP=smtp.gmail.com smtp_port=587 – shlomi Jul 29 '14 at 09:15
  • You need to configure it otherwise it will never work, here is the direct link to the answer wich explains it step by step: http://stackoverflow.com/a/18185233/2032020 – Sander Visser Jul 29 '14 at 09:18
  • You could also configure php to relay your mail to your internet provider wich works in some cases. I'm from the netherlands and i can use mail.chello.nl (or something) as my smtp relay. using gmail as smtp server requires you to configure sendmail also – Sander Visser Jul 29 '14 at 09:19
  • still not working... :-( – shlomi Jul 29 '14 at 09:28
  • Are you using windows or linux distro? Setting the SMTP is only for Windows. you need to use the sendmail_path when you use a linux distro. If that isn't working you need to check your error.log/debug.log that you have defined in your sendmail configuration. – Sander Visser Jul 29 '14 at 09:30
  • I'm using win7 64bit. other question, If I want to move it to a website, do I need all this configuration or it's only to localhost? Thanks! – shlomi Jul 29 '14 at 09:34
  • No you only need to configure it for your localhost (probably) your hosting should have configure this allready for their enviroment – Sander Visser Jul 29 '14 at 09:40
0

Sending email from your server sometimes cause intermittent problem. If i were you i will use external smtp service suchbas gmail. I created a simple code to test your mail server tonsend email, please see it here: https://github.com/ivankristianto/PHP-Mail-Tester You can try a lot of configuration, please see the instructions for more details.

Ivan
  • 714
  • 1
  • 12
  • 28
-1

maybe the gmail refuse your request. because you use the default function mail()

you can use smtp protocol to send email,pop3 to receive email.

Sonimy
  • 19
  • 2
  • the default mail function should just work google wouldn't deny your request. It's could be it's denied somewhere between the line – Sander Visser Jul 29 '14 at 08:56