lightningrod Posted September 23, 2010 Share Posted September 23, 2010 Not sure exactly what my problem is here, but i have looked at this at least a hundred times and I just can't figure out what is going on. Everything works great except for the sending the email part. It displays the error "There was a problem sending the mail". The form field checking works fine, the insert into mysql works fine - - but it won't send the email. I have tried using double quotes and single quotes for the email information ($to, $subject, etc...) I have even eliminated the form data from the email information and it still doesn't send. I am hopelessly stuck at this point Any ideas?? Code below: <html> <body bgcolor = 'blue'> <div align = 'center'> <h1>test FORM</h1> </div> <p> <?php If ($_POST['submit']) //if the Submit button pressed { //collect form data $fname = $_POST['FName']; $lname = $_POST['LName']; $email = $_POST['Email']; $tel = $_POST['Tel']; $mess = $_POST['Mess']; $errorstring = ""; if (!$fname) $errorstring = $errorstring."First Name<br>"; if (!$lname) $errorstring = $errorstring."Last Name<br>"; if (!$email) $errorstring = $errorstring."Email<br>"; if ($errorstring !="") echo "<div align = 'center'><b>Please fill out the following fields:</b><br><font color = 'red'><b>$errorstring</b></font></div>"; else { $fname = mysql_real_escape_string($fname); $lname = mysql_real_escape_string($lname); $email = mysql_real_escape_string($email); $tel = mysql_real_escape_string($tel); $mess = mysql_real_escape_string($mess); $con = mysql_connect("localhost","user","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("mec", $con); $sql="INSERT INTO formtest (FName, LName, Title, Tel, Email, Mess) VALUES ('$fname','$lname','$title','$tel','$email','$mess')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } $to = 'myemailaddress'; $subject = 'test form'; $message = 'Hello'; $headers = 'From Me'; $sent = mail($to, $subject, $message, $headers); if($sent) {print "Email successfully sent";} else {print "There was an error sending the mail";} mysql_close($con); } } ?> <p> <form action= 'testmecform.php' method= 'POST'> <table width = '640' border = '0' align = 'center'> <tr> <td align = 'right'><b>First Name</b></td> <td><input type = 'text' name = 'FName' value = '<?php echo $fname; ?>' size = '25'></td> <td><div align = 'right'><b>Telephone</b></div></td> <td><input type = 'text' name = 'Tel' value = '<?php echo $tel; ?>' size = '25'></td> </tr> <tr> <td align = 'right'><b>Last Name</b></td> <td><input type = 'text' name = 'LName' value = '<?php echo $lname; ?>' size = '25'></td> <td> </td> <td> </td> </tr> <tr> <td align = 'right'><b>Email</b></td> <td><input type = 'text' name = 'Email' value = '<?php echo $email; ?>' size = '25'></td> <td> </td> <td> </td> </tr> <tr> <th colspan = '4'><b>Please enter any additional information here:</b></th> </tr> <tr> <th colspan = '4'><textarea name = 'Mess' cols = '50' rows = '10'><?php echo $mess; ?></textarea></th> </tr> <tr> <th colspan = '4'><b>Please make sure all information is correct before submitting</b></th> </tr> <tr> <th colspan = '4'><input type = 'submit' name = 'submit' value = 'Submit Form'></th> </tr> </table> </form> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/214158-trying-to-email-form-data-after-successful-insert-into-mysql/ Share on other sites More sharing options...
kenrbnsn Posted September 23, 2010 Share Posted September 23, 2010 If this is what is really in the $header variable: <?php $headers = 'From Me'; ?> Then the header is not correct and your system is dumping the email message into the bit bucket. The "From:" header needs at least <?php $headers = "From: [email protected]"; ?> Ken Quote Link to comment https://forums.phpfreaks.com/topic/214158-trying-to-email-form-data-after-successful-insert-into-mysql/#findComment-1114357 Share on other sites More sharing options...
lightningrod Posted September 23, 2010 Author Share Posted September 23, 2010 If this is what is really in the $header variable: <?php $headers = 'From Me'; ?> Then the header is not correct and your system is dumping the email message into the bit bucket. The "From:" header needs at least <?php $headers = "From: [email protected]"; ?> Ken I actually had $headers = 'From: $email'; initially and it didn't work either. Single quotes OR double quotes got same result Quote Link to comment https://forums.phpfreaks.com/topic/214158-trying-to-email-form-data-after-successful-insert-into-mysql/#findComment-1114360 Share on other sites More sharing options...
kenrbnsn Posted September 23, 2010 Share Posted September 23, 2010 It could be that your ISP/Host will not let email message go out of the system if the "From" address doesn't contain a valid email address for your system. Try a simple script to see if you can send email at all: <?php mail('[email protected]','Test Message','This is a test email message','From: [email protected]'); ?> If that works, change the headers variable to be: <?php $headers = "From: [email protected]\nReply-to: $email"; ?> This will make the email message you send look like it's coming from your valid email address and add a Reply-to header so when you reply to the message, it will go to the correct address. Ken Quote Link to comment https://forums.phpfreaks.com/topic/214158-trying-to-email-form-data-after-successful-insert-into-mysql/#findComment-1114365 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.