Jump to content

Contact Form Not Sending Emails


flatrabbit

Recommended Posts

I have a simple php contact form:

http://brand32.com/clients/dark_water_media/Dark/contact.html

 

Upon clicking "Send" the message displays "Your message has been sent successfully!" but no email is received. I've changed the email in the code multiple times, but the same result (or lack thereof).

 

Here is the php code:

 

<?php

 

$receiverMail

= "seanmcpeak@comcast.net"; /* Your email */

 

 

$name

= ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));

 

$email

= ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));

 

$website

= ltrim(rtrim(strip_tags(stripslashes($_POST['website']))));

 

$msg

= ltrim(rtrim(strip_tags($_POST['msg'])));

 

$subject = $name ." - ".$website;

 

$ip

= getenv("REMOTE_ADDR");

 

$msgformat

= "From: $name ($ip)\nEmail: $email\n\n$msg"; /* MSG format */

 

 

 

// VALIDATION

 

if(empty($name) || empty($email) || empty($website) || empty($msg)) {

 

 

echo "<div id='status' class='error'>The email was not sent. Please fill all the required fields</div>";

 

}

 

elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {

 

 

echo "<div id='status' class='error'>The email was not sent. The email address is invalid</div>";

 

}

 

else {

 

 

mail($receiverMail, $subject, $msgformat, "From: $name <$email>");

 

 

echo "<div id='status' class='ok'>Your message has been sent successfully!</div"; }

 

?>

 

 

Thanks in advance.

Link to comment
Share on other sites

That's quite an old script you've found somewhere. The ereg() function is deprecated as of PHP 5.3.0 and I'd like to think the version your using is more current, perhaps not though. Instead of sanitising the website (which is wrong in its current state) and email why not validate them using the preg_match function and error if false; its normally better to define what is allowed than remove everything that's not or test for everything that's not.

 

I'd imagine the ereg is causing problems so get it changed to preg_match.

Edited by CPD
Link to comment
Share on other sites

Before we go any further, let's make sure this is a code problem and not a server problem. Create a new .php file and put only the following in to it:

<?php

if (mail("seanmcpeak@comcast.net", "This is a test", "This is a test")) {
echo 'success';
} else {
echo 'fail';
}

 

Make sure the "seanmcpeak@comcast.net" is where you want the test to be sent.

 

Run the script on your GoDaddy server. If you get "success", make sure the mail is delivered. If it was, then we know it is a problem in your code above. If not, then something on the server is not configured properly.

Link to comment
Share on other sites

Before we go any further, let's make sure this is a code problem and not a server problem. Create a new .php file and put only the following in to it:

<?php

if (mail("seanmcpeak@comcast.net", "This is a test", "This is a test")) {
echo 'success';
} else {
echo 'fail';
}

 

Make sure the "seanmcpeak@comcast.net" is where you want the test to be sent.

 

Run the script on your GoDaddy server. If you get "success", make sure the mail is delivered. If it was, then we know it is a problem in your code above. If not, then something on the server is not configured properly.

 

No email and the page displayed 'fail'

Link to comment
Share on other sites

Then your host does not have a working MTA (Mail Transfer Agent) you can use, and thus you're unable to send e-mails via the mail () function.

As for the functions listed above that you didn't understand, the PHP manual is a great resource for explaining them.

 

I recommend, first and foremost, to read up on the basics of PHP. Having the basic knowledge in place will allow you to better understand what you're working on, and thus have a better chance at making something work.

Once you've done that, I strongly recommend that you dismiss the script above, as it's seriously outdated and insecure. Instead you should take a look at PHPmailer, and use it for your contact script.

 

Lastly, if you can't get that to work, then you need to change hosts.

 

PS: Please use the [code][/code] tags around your code, as it helps make both your post and your code a lot easier to read.

Link to comment
Share on other sites

Then your host does not have a working MTA (Mail Transfer Agent) you can use, and thus you're unable to send e-mails via the mail () function.

As for the functions listed above that you didn't understand, the PHP manual is a great resource for explaining them.

 

I recommend, first and foremost, to read up on the basics of PHP. Having the basic knowledge in place will allow you to better understand what you're working on, and thus have a better chance at making something work.

Once you've done that, I strongly recommend that you dismiss the script above, as it's seriously outdated and insecure. Instead you should take a look at PHPmailer, and use it for your contact script.

 

Lastly, if you can't get that to work, then you need to change hosts.

 

PS: Please use the


tags around your code, as it helps make both your post and your code a lot easier to read.

 

Thanks man. I'll get to reading and check out PHPmailer. Great resources. Cheers.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.