CSpoon Posted September 14, 2006 Share Posted September 14, 2006 Hello, Newbie here...Just made an email form which works, except that I am not getting the subject that I want in the email. I "hard-wired" it to say "Catalogue request" but somehow it returns the user's email address. Must be something obvious I am missing?Also, is it possible to change the "From" emailaddress (currently it's "[email protected]")to the user's email address?Thanks for any input.C.[color=blue]<?php if ($_SERVER['REQUEST_METHOD'] != 'POST'){ $me = $_SERVER['PHP_SELF'];?> <form name="form1" method="post" action="<?php echo $me;?>"> <table border="0" cellspacing="0" cellpadding="2"> <tr> <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">Name</font></td> <td><input type="text" name="Name"></td> </tr> <tr> <td><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">Email</font></td> <td><input type="text" name="email"></td> </tr> <tr> <td valign="top"><font color="#666666" size="2" face="Verdana, Arial, Helvetica, sans-serif">Mailing Address </font></td> <td><textarea name="MsgBody"></textarea></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Send"></td> </tr> </table> </form><?php } else { error_reporting(0); $recipient = '[email protected]'; $subject = 'Catalogue request'; $from = stripslashes($_POST['Name']); $msg = "$from\n\n $email\n\n".stripslashes($_POST['MsgBody']); if (mail($recipient, $email, $msg)) echo nl2br("<font color=#339900 size= 2 face='Verdana, Arial, Helvetica, sans-serif'><strong><br>Thanks for your request!</strong></font><font color=#339900 size= 2 face='Verdana, Arial, Helvetica, sans-serif'>A catalogue will be sent to: <br> $msg "); else echo "Message failed to send, please try again later or contact our office.";}?>[/color] Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/ Share on other sites More sharing options...
onlyican Posted September 14, 2006 Share Posted September 14, 2006 The from is not mentioned in the mail() functionyou can have something like $recipient = '[email protected]'; $subject = 'Catalogue request'; $msg = "$from\n\n $email\n\n".stripslashes($_POST['MsgBody']); $header = 'From: ".stripslashes($_POST['Name']); if (mail($recipient, $email, $msg, header)) Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92008 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=onlyican link=topic=108084.msg434456#msg434456 date=1158268619]The from is not mentioned in the mail() functionyou can have something like $recipient = '[email protected]'; $subject = 'Catalogue request'; $msg = "$from\n\n $email\n\n".stripslashes($_POST['MsgBody']); $header = 'From: ".stripslashes($_POST['Name']); if (mail($recipient, $email, $msg, header))[/quote]------------------------------------------------------------------Thanks for trying.. this kinda makes sense, but I can't make it work.Getting "Parse error: syntax error, unexpected '<' "Here is what I used:[color=blue] error_reporting(0); $recipient = '[email protected]'; $subject = 'Catalogue request'; $from = stripslashes($_POST['Name']); $msg = "$from\n\n $email\n\n".stripslashes($_POST['MsgBody']);<br> $header = "$from: ".stripslashes($_POST['Name']); if (mail($recipient, $email, $msg, $header))[/color] Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92361 Share on other sites More sharing options...
obsidian Posted September 15, 2006 Share Posted September 15, 2006 to answer your initial question, you're getting their email for the subject because that's the variable you have in the mail() function. if you look at the API of the mail() function, you'll notice that the variables it takes (in order) are:1) to == the email that you want the message sent to2) subject == subject line of the message3) message == obvious4) optional headers (from, reply-to, bcc, etc)so, with that in mind, here is a simple example i'm sure you can use to modify yours:[code]<?php$to = "[email protected]";$subject = "My form!!!";$msg = "Whatever content you want here";$headers = "From: $_POST[name] <$_POST[email]>\r\nReply-To: $_POST[email]";mail($to, $subject, $msg, $headers);?>[/code]hope this helps Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92367 Share on other sites More sharing options...
onlyican Posted September 15, 2006 Share Posted September 15, 2006 With Regards to the Unexpetec <This is normally when you have used HTM code outside an echoor forgot to close the php?> Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92370 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=obsidian link=topic=108084.msg434846#msg434846 date=1158325704]to answer your initial question, you're getting their email for the subject because that's the variable you have in the mail() function. if you look at the API of the mail() function, you'll notice that the variables it takes (in order) are:1) to == the email that you want the message sent to2) subject == subject line of the message3) message == obvious4) optional headers (from, reply-to, bcc, etc)so, with that in mind, here is a simple example i'm sure you can use to modify yours:[code]<?php$to = "[email protected]";$subject = "My form!!!";$msg = "Whatever content you want here";$headers = "From: $_POST[name] <$_POST[email]>\r\nReply-To: $_POST[email]";mail($to, $subject, $msg, $headers);?>[/code]hope this helps[/quote]Hi Obsidian..thanks! This solved the Subject problem.I used your header line "From: $_POST[name] <$_POST[email]>\r\nReply-To: $_POST[email]"to get the proper reply address (the form user's address), but instead get "[email protected]." in the From.Am sure I am missing something obvious here?[color=blue] $subject = 'Catalogue request'; $from = stripslashes($_POST['Name']); $msg = "You have received a catalogue request from: $from\n\n $email\n\n".stripslashes($_POST['MsgBody']); $header = "From: $_POST[name] <$_POST[email]>\r\nReply-To: $_POST[email]"; if (mail($recipient, $subject, $msg, $header))[/color] Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92392 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=onlyican link=topic=108084.msg434849#msg434849 date=1158325898]With Regards to the Unexpetec <This is normally when you have used HTM code outside an echoor forgot to close the php?>[/quote]Thanks onlyican... I did find some HTML code outside... ;-) Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92395 Share on other sites More sharing options...
obsidian Posted September 15, 2006 Share Posted September 15, 2006 well, in my example code, i'm not verifying the email address. you'll need to run a check to make sure the entered email address is an appropriate entry before you assign it to your headers:[code]<?php$email = trim($_POST['email']);if (!preg_match('|^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) { // invalid email address entered. handle some sort of error message here} else { // valid, let's send it: $to = '[email protected]'; $subject = "My form!!!"; $msg = "Whatever content you want here"; $headers = "From: $_POST[name] <$email>\r\nReply-To: $email"; mail($to, $subject, $msg, $headers);}?>[/code]make sense? Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92402 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=obsidian link=topic=108084.msg434882#msg434882 date=1158328212]well, in my example code, i'm not verifying the email address. you'll need to run a check to make sure the entered email address is an appropriate entry before you assign it to your headers:[code]<?php$email = trim($_POST['email']);if (!preg_match('|^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) { // invalid email address entered. handle some sort of error message here} else { // valid, let's send it: $to = '[email protected]'; $subject = "My form!!!"; $msg = "Whatever content you want here"; $headers = "From: $_POST[name] <$email>\r\nReply-To: $email"; mail($to, $subject, $msg, $headers);}?>[/code]make sense?[/quote]Yes. Though beyond me.. wow. I incorporated it.. and received this error:[color=blue]Parse error: syntax error, unexpected $end on on line 111[/color]..which is the end of the webpage! Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92417 Share on other sites More sharing options...
obsidian Posted September 15, 2006 Share Posted September 15, 2006 that usually means you're missing a closing bracket '}' somewhere. check all your loops and conditionals and see if you can figure out where something may be amiss. Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92424 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=obsidian link=topic=108084.msg434906#msg434906 date=1158330376]that usually means you're missing a closing bracket '}' somewhere. check all your loops and conditionals and see if you can figure out where something may be amiss.[/quote]Hi again,thanks for persisting with me...I've tried several things with no luck... can you see it?[color=blue]<?php } else { error_reporting(0); $email = trim($_POST['email']);if (!preg_match('|^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) { // invalid email address entered. Please enter a valid email address.} else { // valid, let's send it: $recipient = '[email protected]'; $subject = 'Catalogue request'; $from = stripslashes($_POST['Name']); $msg = "You have received a catalogue request from: $from\n\n $email\n\n".stripslashes($_POST['MsgBody']); $header = "From: $_POST[name] <$_POST[email]>\r\nReply-To: $_POST[email]"; if (mail($recipient, $subject, $msg, $header)) echo nl2br("<font color=#339900 size= 2 face='Verdana, Arial, Helvetica, sans-serif'><strong><br>Thanks for your request!</strong></font><font color=#339900 size= 2 face='Verdana, Arial, Helvetica, sans-serif'>A catalogue will be sent to: <br> $msg "); else echo "Message failed to send, please try again later or contact our office.";}?>[/color] Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92451 Share on other sites More sharing options...
onlyican Posted September 15, 2006 Share Posted September 15, 2006 yesTop of the script u have elsebut u dont close the else Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92454 Share on other sites More sharing options...
CSpoon Posted September 15, 2006 Author Share Posted September 15, 2006 [quote author=onlyican link=topic=108084.msg434936#msg434936 date=1158333429]yesTop of the script u have elsebut u dont close the else[/quote]Yes! That was it...thank-you.Now, the From email address has ".whsecure.net" tagged onto it, as in "[email protected]." Link to comment https://forums.phpfreaks.com/topic/20785-simple-email-form-problem/#findComment-92456 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.