webguync Posted December 22, 2010 Share Posted December 22, 2010 I am getting an error on a form which sends an email if the form is succesfull. I think there may ne an issue with the sendmail function. I am using a hosting company and not sure if sendmail is something that has to be enabled in the .ini file. Is there any way to check without getting the hosting company involved? Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/ Share on other sites More sharing options...
Rifts Posted December 22, 2010 Share Posted December 22, 2010 post code Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150443 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 <?php //Retrieve form data. //GET - user submitted data using AJAX //POST - in case user does not support javascript, we'll use POST instead $name = ($_GET['name']) ? $_GET['name'] : $_POST['name']; $email = ($_GET['email']) ?$_GET['email'] : $_POST['email']; $website = ($_GET['website']) ?$_GET['website'] : $_POST['website']; $comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment']; //flag to indicate which method it uses. If POST set it to 1 if ($_POST) $post=1; //Simple server side validation for POST data, of course, you should validate the email if (!$name) $errors[count($errors)] = 'Please enter your name.'; if (!$email) $errors[count($errors)] = 'Please enter your email.'; if (!$comment) $errors[count($errors)] = 'Please enter your comment.'; //if the errors array is empty, send the mail if (!$errors) { //recipient $to = 'your name <[email protected]>'; //sender $from = $name . ' <' . $email . '>'; //subject and the html message $subject = 'Comment from ' . $name; $message = ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head></head> <body> <table> <tr><td>Name</td><td>' . $name . '</td></tr> <tr><td>Email</td><td>' . $email . '</td></tr> <tr><td>Website</td><td>' . $website . '</td></tr> <tr><td>Comment</td><td>' . nl2br($comment) . '</td></tr> </table> </body> </html>'; //send the mail $result = sendmail($to, $subject, $message, $from); //if POST was used, display the message straight away if ($_POST) { if ($result) echo 'Thank you! We have received your message.'; else echo 'Sorry, unexpected error. Please try again later'; //else if GET was used, return the boolean value so that //ajax script can react accordingly //1 means success, 0 means failed } else { echo $result; } //if the errors array has values } else { //display the errors message for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>'; echo '<a href="form.php">Back</a>'; exit; } //Simple mail function with HTML header function sendmail($to, $subject, $message, $from) { $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= 'From: ' . $from . "\r\n"; $result = mail($to,$subject,$message,$headers); if ($result) return 1; else return 0; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150444 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 see anything wrong with the code? I was thinking may mail() wasn't enabled by the hosting company. Would it show up in PHP Info? I didn't see anything, but here is the info on what PHP is running. http://www.inspired-evolution.com/PHP_info.php Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150499 Share on other sites More sharing options...
PFMaBiSmAd Posted December 22, 2010 Share Posted December 22, 2010 I am getting an error ... Care to tell someone what error that was so they know where to start looking at? Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150501 Share on other sites More sharing options...
Rifts Posted December 22, 2010 Share Posted December 22, 2010 if I were you I would make a separate page and make the simplest possible mail script and see if that works something like <?php $to = $subject = $message = mail($to, $subject, $message); ?> Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150502 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 sorry, I just get the else echo, not a PHP error else echo 'Sorry, unexpected error. Please try again later'; how would I set the simple script to go to a specific email, because I think the email I have through the hosting company is not one that I typically use. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150505 Share on other sites More sharing options...
Rifts Posted December 22, 2010 Share Posted December 22, 2010 make a page called test_email.php type this in <?php $to = 'youremail can be yahoo, gmail, it doesnt matter' $subject = 'this is a test' $message = 'I rock at the phps' mail($to, $subject, $message); ?> save and upload it go to http://www.yoursite.com/test_email.php check email Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150507 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 hmm, what is wrong with this code? <?php $to = '[email protected]' $subject = 'this is a test' $message = 'I rock at the phps' mail($to, $subject, $message); ?> getting a 'Parse error: syntax error, unexpected T_VARIABLE in \test.php on line 3' Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150514 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 ooops nevermind. left out the ; on three lines. ok, that did work. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150515 Share on other sites More sharing options...
Rifts Posted December 22, 2010 Share Posted December 22, 2010 ok well good now you know your server can use mail(); Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150517 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 yep, I do know that now thanks. Still not sure why my form won't post though. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150519 Share on other sites More sharing options...
Rifts Posted December 22, 2010 Share Posted December 22, 2010 $result = sendmail($to, $subject, $message, $from); shouldnt that be $result = mail($to, $subject, $message, $from); Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150521 Share on other sites More sharing options...
BlueSkyIS Posted December 22, 2010 Share Posted December 22, 2010 http://php.net/manual/en/function.mail.php Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150522 Share on other sites More sharing options...
PFMaBiSmAd Posted December 22, 2010 Share Posted December 22, 2010 The most apparent problem in your full code that does not work is that you are putting the email address that was entered into the From: header. You need to put an email address hosted at the sending mail server into the From: header and you can put any entered email address into the Reply-to: header. To find if there are any php errors returned by the mail() function call, set error_reporting to E_ALL (or a -1) and display_errors to ON - ini_set("display_errors", "1"); error_reporting(-1); Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150523 Share on other sites More sharing options...
webguync Posted December 22, 2010 Author Share Posted December 22, 2010 do you mean in the function? function mail($to, $subject, $message, $from) { $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= 'From: ' . $from . "\r\n"; $result = mail($to,$subject,$message,$headers); if ($result) return 1; else return 0; } not really sure I am understanding what to change. I added the error reporting, and not getting any errors. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150527 Share on other sites More sharing options...
webguync Posted December 23, 2010 Author Share Posted December 23, 2010 update, when I did the test sendmail, I got the email it came from and changed the header to this. $headers .= "[email protected]" . "\r\n"; and the form still doesn't send. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150596 Share on other sites More sharing options...
webguync Posted December 23, 2010 Author Share Posted December 23, 2010 any more ideas on why this isn't working or how I can debug? Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150745 Share on other sites More sharing options...
BlueSkyIS Posted December 23, 2010 Share Posted December 23, 2010 when i try to parse that function, i get a parse error: Fatal error: Cannot redeclare mail() and inside that mail() function, you call mail(), thereby having the function call itself. long story short: you should probably name your function something besides an existing PHP function name. Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150824 Share on other sites More sharing options...
webguync Posted December 23, 2010 Author Share Posted December 23, 2010 shouldn't this work? or is sendmail() the same as mail()? function sendmail($to, $subject, $message, $from) { $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= "[email protected]" . "\r\n"; $result = sendmail($to,$subject,$message,$headers); if ($result) return 1; else return 0; } Quote Link to comment https://forums.phpfreaks.com/topic/222416-php-sendmail/#findComment-1150945 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.