flatrabbit Posted December 30, 2012 Share Posted December 30, 2012 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 = "[email protected]"; /* 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. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/ Share on other sites More sharing options...
scootstah Posted December 30, 2012 Share Posted December 30, 2012 Wow, that is some very outdated code. Do you have a working mail server installed? Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402243 Share on other sites More sharing options...
flatrabbit Posted December 30, 2012 Author Share Posted December 30, 2012 I don't understand. It came with a template. Its on a linux hosting account with GoDaddy running php 5.2 Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402244 Share on other sites More sharing options...
cpd Posted December 30, 2012 Share Posted December 30, 2012 (edited) 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 December 30, 2012 by CPD Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402245 Share on other sites More sharing options...
flatrabbit Posted December 30, 2012 Author Share Posted December 30, 2012 Thanks for your help guys, but you're way over my head. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402246 Share on other sites More sharing options...
cpd Posted December 30, 2012 Share Posted December 30, 2012 Thanks for your help guys, but you're way over my head. Soo.... Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402247 Share on other sites More sharing options...
scootstah Posted December 30, 2012 Share Posted December 30, 2012 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("[email protected]", "This is a test", "This is a test")) { echo 'success'; } else { echo 'fail'; } Make sure the "[email protected]" 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. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402249 Share on other sites More sharing options...
flatrabbit Posted December 31, 2012 Author Share Posted December 31, 2012 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("[email protected]", "This is a test", "This is a test")) { echo 'success'; } else { echo 'fail'; } Make sure the "[email protected]" 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' Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402257 Share on other sites More sharing options...
flatrabbit Posted December 31, 2012 Author Share Posted December 31, 2012 Soo.... I was referring to ereg and preg_match Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402262 Share on other sites More sharing options...
Christian F. Posted December 31, 2012 Share Posted December 31, 2012 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. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402263 Share on other sites More sharing options...
flatrabbit Posted December 31, 2012 Author Share Posted December 31, 2012 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. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402265 Share on other sites More sharing options...
Pikachu2000 Posted December 31, 2012 Share Posted December 31, 2012 Before you go run off and do that, you might want to check GoDaddy's FAQs. I've never had a problem sending mail from one of their hosting servers. Quote Link to comment https://forums.phpfreaks.com/topic/272528-contact-form-not-sending-emails/#findComment-1402268 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.