Skip navigation
Danzy007
Currently Being Moderated

Contact form using php in dreamweaver

Jun 29, 2012 8:12 AM

i created a site in wamp and it contained a php contact form that is suppose to send messages to a predefined e-mail address. but whenever i use it, they will display the following INSTEAD OF SENDING THE MESSAGE:

 

Warning: mail() [function.mail]: Failed to connect to mailserver at at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini_set() in C:\wamp\www\NDSTB\contact.php on line 51

 

 

THIS IS THE CONTENT OF 50 and 51 respectively:

 

// if validation passed ok then send the email

                    mail($email_to, $email_subject, $email_content);

 

 

THE IS THE CONTENT OF THE WHOLE CODE OF THE PHP CONTACT FORM:

 

<?php

 

 

// Set email variables

$email_to = 'dannytyls@yahoo.com';

$email_subject = 'Form submission';

 

 

// Set required fields

$required_fields = array('fullname','email','comment');

 

 

// set error messages

$error_messages = array(

          'fullname' => 'Please enter a Name to proceed.',

          'email' => 'Please enter a valid Email Address to continue.',

          'comment' => 'Please enter your Message to continue.'

);

 

 

// Set form status

$form_complete = FALSE;

 

 

// configure validation array

$validation = array();

 

 

// check form submittal

if(!empty($_POST)) {

          // Sanitise POST array

          foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));

 

          // Loop into required fields and make sure they match our needs

          foreach($required_fields as $field) {

                    // the field has been submitted?

                    if(!array_key_exists($field, $_POST)) array_push($validation, $field);

 

                    // check there is information in the field?

                    if($_POST[$field] == '') array_push($validation, $field);

 

                    // validate the email address supplied

                    if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);

          }

 

          // basic validation result

          if(count($validation) == 0) {

                    // Prepare our content string

                    $email_content = 'New Website Comment: ' . "\n\n";

 

                    // simple email content

                    foreach($_POST as $key => $value) {

                              if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";

                    }

 

                    // if validation passed ok then send the email

                    mail($email_to, $email_subject, $email_content);

 

                    // Update form switch

                    $form_complete = TRUE;

          }

}

 

 

function validate_email_address($email = FALSE) {

          return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;

}

 

 

function remove_email_injection($field = FALSE) {

   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));

}

 

 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

 

 

<!-- Contact Form Designed by James Brand @ dreamweavertutorial.co.uk -->

<!-- Covered under creative commons license - http://dreamweavertutorial.co.uk/permissions/contact-form-permissions. htm -->

 

 

          <title>Contact Form</title>

          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

          <link href="contact/css/contactform.css" rel="stylesheet" type="text/css" />

 

          <script type="text/javascript">

                    var nameError = '<?php echo $error_messages['fullname']; ?>';

                    var emailError = '<?php echo $error_messages['email']; ?>';

                    var commentError = '<?php echo $error_messages['comment']; ?>';

          </script>

    <script type="text/javascript" src="contact/validation/validation.js"></script>

 

 

<style type="text/css">

<!--

body {

          background-image: url();

          background-repeat: repeat;

}

-->

</style>

</head>

 

 

<body>

<div id="FormWrap">

<div id="formwrapper">

   

    <h2>We Appreciate Your Feedback</h2>

    <div id="form">

    <?php if($form_complete === FALSE): ?>

          <form action="contact.php" method="post" id="comments_form">  

          <div class="row">

    <div class="label">Your Name</div><!--end.label-->

          <div class="input">

          <input type="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>"/><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>

          </div><!-- end #input-->

    <div class="context">e.g Matthew James or Abdulkarim Sani</div><!-- end.context-->

          </div><!-- end #row-->

   

    <div class="row">

    <div class="label">Your E-mail Address</div><!--end.label-->

          <div class="input">

          <input type="text" id="email" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>"/><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>

          </div><!-- end #input-->

    <div class="context">We will not share your e-mail with anyone or spam you with messages either</div><!-- end.context-->

          </div><!-- end #row-->

   

    <div class="row">

    <div class="label">Your Message</div><!--end.label-->

          <div class="input2">

            <textarea id="comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea>

            <?php if(in_array('comment', $validation)): ?>

            <span class="error"><?php echo $error_messages['comment']; ?></span>

            <?php endif; ?>

          </div>

          <!-- end #input-->

             </div><!-- end #row-->

   

    <div class="submit">

    <input type="submit" id="submit" name="submit" value="Send Message" />

          </div><!--end.form-->

    </form>

          <?php else: ?>

<p style="font-size:35px; font-family:Arial, Helvetica, sans-serif; color:#255E67; margin-left:25px;">Thank you for your Message!</p>

<script type="text/javascript">

setTimeout('ourRedirect()', 5000)

function ourRedirect(){

          location.href='contact.php'

}

</script>

<?php endif; ?>

 

 

   

    </div><!-- endformwrapper -->

 

 

 

</div><!-- end.FormWrap -->

 

 

</body>

</html>

 

  

I NEED SOMEONE TO HELP ME FIGURE OUT WHAT TO DO

 
Replies
  • Currently Being Moderated
    Jun 29, 2012 8:33 AM   in reply to Danzy007

    Did you upload your contact form and scripts to your remote server to test?

     

     

    Nancy O. 

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 29, 2012 8:44 AM   in reply to Danzy007

    Your form should work fine on a remote server assuming that php is set up correctly. I tested it on my local and remote and its fine........so your local php must be set up incorrectly.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 4:02 AM   in reply to Danzy007

    You cannot send email from your local system. The role of PHP is to hand the message to a mail transport agent. In the past, it used to be possible to use php.ini to point your local PHP server to your hosting company's SMTP server. But the vast majority of companies now require a username and password before allowing SMTP connections. The PHP mail() function doesn't support SMTP authentication.

     

    As osgood told you, you need to upload the file to your remote server, and use it from there.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 6:12 AM   in reply to David_Powers

    David_Powers wrote:

     

    You cannot send email from your local system.

     

    I can test php forms locally without uploading to the remote server which is handy BUT it seems what you are saying David is that most ISPs won't let you do that, is that correct? As a concequence you need to upload the form to the remote and then test?

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 6:42 AM   in reply to osgood_

    I think what he is saying is that you just cannot send mail from the local system using the remote SMTP server.  You can certainly test all other aspects of your form locally.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 6:45 AM   in reply to MurraySummers

    Murray *ACP* wrote:

     

    I think what he is saying is that you just cannot send mail from the local system using the remote SMTP server.  You can certainly test all other aspects of your form locally.

     

    Oh OK Murray - thanks for the clarification.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 7:36 AM   in reply to osgood_

    If I recall correctly, you're using a Mac. PHP simply hands the output of mail() to the mail transport agent (MTA) on the same server. I remember setting up PHP on a Mac donkeys years ago. Because I had set up an account in Mac Mail (or whatever the default mail program is called), I was able to send emails from my local PHP testing server. These days, I never set up an email account on my Mac, so it won't work.

     

    The OP is using WAMP, which is a Windows package. Windows doesn't have an MTA (or if it does, PHP doesn't use it). You need to change the SMTP setting in php.ini to point to an SMTP server. In the early days of working with PHP, I used to enter the address of my ISP's mail server, and all was fine. However, the proliferation of spam forced most ISPs to require a username and password when sending mail. The mail() function doesn't support SMTP authentication. It's simply designed to drop the message on the local MTA, and leave it to deal with it.

     

    As Murray rightly says, you can test all other aspects of your form locally. What my books now recommend is using print_r() to display the form output, then building the processing script, and using echo to display the body of the message. Once you're happy that the form is being correctly processed, remove the testing code, and upload to the remote server.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 7:47 AM   in reply to David_Powers

    Yep I'm on a Mac, mail() function workflow is good here.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 7:52 AM   in reply to osgood_

    Yes, it must be sending it through the account you have set up in Mac Mail, which will handle the username and password, something that mail() is not designed to do.

     
    |
    Mark as:
  • Currently Being Moderated
    Jul 2, 2012 8:03 AM   in reply to David_Powers

    David_Powers wrote:

     

    Yes, it must be sending it through the account you have set up in Mac Mail, which will handle the username and password, something that mail() is not designed to do.

     

    Actually I'm sending through my hosting servers SMTP I guess as I do not have a Mac Mail account.

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points