Headshot Posted April 6, 2011 Share Posted April 6, 2011 [Apologies for the double post, I have already posted this question in the "PHP Coding Help" section, it was suggested to post it here in the "3rd Party PHP Scripts" section as well.] Hi all, I am a total beginner at pretty much everything to do with Web development, but sadly especially beginner at PHP. I'm keen to learn though (even it if takes me a while to understand!). I am trying to add a simple form to a webpage that allows a visitor to fill in their name, then their email address plus a couple of other fields and click on a "submit" button. This will then send a basic email with the users information to a set email address. I've downloaded and installed "Formmail.php" into my website, I've created some inputs in the HTML, the HTML loads fine, I can see the form fields, but for the love of all things holy when I click "submit" I cannot get it to send email out. I am totally ignorant at how PHP (or any other scripting language) works, and especially ignorant at how Formmail.php works. I cannot figure out where it is asking for any SMTP server to use to send email (is it even using one?), or how it is is sending email? I realise the error I'm getting is something to do with authentication, but can't see how to get it to authenticate properly? I have an SMTP server I can use (if needed), with authentication credentials ready - but as said above, ignorance of how this is supposed to work is playing a big part with my failures here. The specific error I get when clicking on the "submit" button is this: Warning: mail() [function.mail]: SMTP server response: 530 SMTP authentication is required. in D:\Websites\synergytraining.co.uk\formmail.php on line 224 There was an unknown error while sending email. « go back So I guess it cannot authenticate with the email address I want to send to? I'm unsure as to how to do this though. I have tried changing some of the User Config setting below to no avail - I'd really appreciate some kind soul to help me please. Current Formmail.php code I have installed is below. Kind regards in advance. <?php /** * PHP version 5 */ # Copyright (c) 2002 Eli Sand # PHP FormMail v2.0 20030305 # Initialize variables $auth = NULL; $deny = NULL; $must = NULL; $post = NULL; $http = NULL; $form = NULL; $list = NULL; # Fix for magic quotes when enabled if (get_magic_quotes_gpc()) { foreach ($_POST as $key => $value) { $_POST["$key"] = stripslashes($value); } } # Detect any Windows operating system if (strstr(php_uname(), 'Windows')) { $IS_WINDOWS = TRUE; } # USER CONFIGURABLE SETTINGS # Authorized email address masks that can be used as the recipient $auth = "*@127.0.0.1, *@localhost, *@".str_replace('www.','',$_SERVER['SERVER_NAME']); # Email address masks that will be rejected if in the email field # $deny = "nobody@*, anonymous@*, postmaster@*"; # DO NOT EDIT ANYTHING PAST THIS POINT # Functions # Trim leading and trailing white space from array values function array_trim(&$value, $key) { $value = trim($value); } # Show an error message to the user function error_msg($error, $required = FALSE) { global $post; if (!empty($post['missing_fields_redirect']) && $required) { header('Location: ' . $post['missing_fields_redirect']); } elseif (!empty($post['error_redirect'])) { header('Location: ' . $post['error_redirect']); } else { echo "<html>\r\n"; echo "\t<head>\r\n"; echo "\t\t<title>Form Error</title>\r\n"; echo "\t\t<style type=\"text/css\">* {font-family: \"Verdana\", \"Arial\", \"Helvetica\", monospace;}</style>\r\n"; echo "\t</head>\r\n"; echo "\t<body>\r\n"; echo "\t\t<p>${error}</p>\r\n\t\t<p><small>« <a href=\"javascript: history.back();\">go back</a></small></p>\r\n"; echo "\t</body>\r\n"; echo "</html>\r\n"; } exit(); } # Basic pattern matching on an entire array function pattern_grep($input, $array) { foreach ($array as $value) { $value = addcslashes($value, '^.[]$()|{}\\'); $value = str_replace('*', '.*', $value); $value = str_replace('?', '.?', $value); $value = str_replace('+', '.+', $value); if (eregi('^' . $value . '$', $input)) { return TRUE; } } return FALSE; } # Main # Check to make sure the info was posted if ($_SERVER['REQUEST_METHOD'] == 'POST') { $post = array( 'recipient' => $_POST['recipient'], 'email' => $_POST['email'], 'subject' => $_POST['subject'], 'realname' => $_POST['realname'], 'required' => $_POST['required'], 'env_report' => $_POST['env_report'], 'sort' => $_POST['sort'], 'redirect' => $_POST['redirect'], 'error_redirect' => $_POST['error_redirect'], 'missing_fields_redirect' => $_POST['missing_fields_redirect'] ); $http = array( 'REMOTE_USER' => $_SERVER['REMOTE_USER'], 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'], 'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'] ); if (isset($must['required'])) { $post['required'] = $must['required'] . ',' . $_POST['required']; } if (isset($must['env_report'])) { $post['env_report'] = $must['env_report'] . ',' . $_POST['env_report']; } if (isset($must['redirect'])) { $post['redirect'] = $must['redirect']; } if (isset($must['error_redirect'])) { $post['error_redirect'] = $must['error_redirect']; } if (isset($must['missing_fields_redirect'])) { $post['missing_fields_redirect'] = $must['missing_fields_redirect']; } if (($auth = explode(',', $auth))) { array_walk($auth, 'array_trim'); } if (($deny = explode(',', $deny))) { array_walk($deny, 'array_trim'); } if ($_POST['security_code'] != $_SESSION['security_code']) { error_msg("Invalid security code."); } else { unset($_POST['security_code']); unset($_SESSION['security_code']); } # Check for missing required fields if ((!empty($post['required'])) && ($list = explode(',', $post['required']))) { $list[] = 'recipient'; $list[] = 'email'; array_walk($list, 'array_trim'); foreach ($list as $value) { if (!empty($value) && empty($_POST["$value"])) { error_msg("You have left a required field blank.", TRUE); } } } # Check the email addresses submitted if (pattern_grep($post['email'], $deny)) { error_msg("You have specified a banned email address."); } if (!eregi('^([a-zA-Z0-9\.\_\-]+)\@((([a-zA-Z0-9\-]+)\.)+([a-zA-Z]+))$', $post['email'])) { error_msg("You have specified an invalid email address."); } # Check if the recipients email address is authorized if ((!empty($post['recipient'])) && ($list = explode(',', $post['recipient']))) { array_walk($list, 'array_trim'); foreach ($list as $value) { if (!eregi('^([a-zA-Z0-9\.\_\-]+)\@((([a-zA-Z0-9\-]+)\.)+([a-zA-Z]+))$', $value)) { error_msg("The recipients email address is invalid."); } if (!pattern_grep($value, $auth)) { error_msg("The recipients email address is unauthorized."); } } } else { error_msg("There was an unknown error while checking the recipients email address."); } # Sort the fields if ((!empty($post['sort'])) && ($list = explode(',', $post['sort']))) { array_walk($list, 'array_trim'); foreach ($list as $value) { $form["$value"] = $_POST["$value"]; } } else { $form = $_POST; } # Create the message $subject = empty($post['subject']) ? "Web Reply" : $post['subject']; foreach ($form as $key => $value) { if (!array_key_exists($key, $post)) { $message .= "${key}: ${value}\r\n\r\n"; } } $message .= "Submitted by: <" . $post['email'] . "> on " . date('l, F jS, Y @ g:i:s a (O)') . "\r\n"; if (!empty($post['env_report'])) { if (($list = explode(',', $post['env_report']))) { $message .= "Sender Details:\r\n"; array_walk($list, 'array_trim'); foreach ($list as $value) { if (array_key_exists($value, $http)) { $message .= "\t${value}: " . $http["$value"] . "\r\n"; } } } } # Send out the email if (mail($post['recipient'], $subject, $message, "From: " . $post['email'] . "\r\nReply-To: " . $post['email'] . "\r\nX-Mailer: PHP FormMail")) { if (!empty($post['redirect'])) { header('Location: ' . $post['redirect']); } else { echo "<html>\r\n"; echo "\t<head>\r\n"; echo "\t\t<title>Thank you</title>\r\n"; echo "\t\t<style type=\"text/css\">* {font-family: \"Verdana\", \"Arial\", \"Helvetica\", monospace;}</style>\r\n"; echo "\t</head>\r\n"; echo "\t<body>\r\n"; echo "\t\t<p>Thank you for filling out the form.</p>\r\n\t\t<p><small>« <a href=\"javascript: history.back();\">go back</a></small></p>\r\n"; echo "\t</body>\r\n"; echo "</html>\r\n"; } } else error_msg("There was an unknown error while sending email."); } else error_msg("Invalid request method used."); Quote Link to comment https://forums.phpfreaks.com/topic/232849-total-beginner-plea-for-help-formmailphp/ Share on other sites More sharing options...
sharkster Posted April 28, 2011 Share Posted April 28, 2011 Just a newb but I believe your server needs the smtp relay script added for outbound authentication or it doesnt have an outbound smtp server to send from Quote Link to comment https://forums.phpfreaks.com/topic/232849-total-beginner-plea-for-help-formmailphp/#findComment-1207318 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.