Page 1 of 1

UDT mini Mailer

Posted: Sun Jan 25, 2009 11:21 pm
by mw
a little mailer that uses php to send email to designated recipient.
because it uses  "PHP_SELF" the echo commands are placed on the same page as the form resides.
useful for grabbing variables from other modules and using them in the form.

create a UDT called "simple_mailer" and paste in the code below:

Code: Select all

if(!empty($_POST['name'])
    || !empty($_POST['email'])
    || !empty($_POST['message']))
	{    
$to = "youremail@somewhere.com"; 
$subject = "Form submission";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$option = $_POST['radio'];
$dropdown = $_POST['drop_down'];
$message = $_POST['message'];
$header = "From: ". $name_field . " <" . $email_field . ">\r\n"; //optional headerfields
$header .= "Reply-To: $name_field < $email_field >\n";
$header .= "X-Mailer: PHP/" . phpversion() . "\n";
$header .= "X-Priority: 1";

foreach($_POST['check'] as $value) {
		$check_msg .= "Checked: $value\n";
	}

        $body = stripslashes($_POST['message']);    
	$body .= "\n\n---------------------------\n";    
	$body = "From: $name_field\n E-Mail: $email_field\n $check_msg Option: $option\n Drop-Down: $dropdown\n Message:\n $message\n";

if(mail($to,$subject,$body,$header)) {
echo "<h3> Your Submission has been sent! </h3>";
echo "<p>Thank you<strong> $name_field </strong><p />";
echo "<p>You may wish to print this page as a reference.</p>";
echo "<h3>Contact Details</h3><br />";
echo "<br />";
echo "<strong>Name</strong>: {$name_field}<br />";
echo "<strong>Email</strong>: {$email_field}<br />";
echo "<br />";
echo "<h3>Submission Details</h3>";
echo "<p><p />";
echo "<strong>Subject</strong>: {$subject}<br />";
echo "<strong>Options</strong>: {$option} <br />";
echo "<strong> Language</strong>: {$dropdown}<br />";
echo "<strong>Favorite color</strong>: {$check_msg} <br />";
echo "<strong>Message</strong>:{$message}<br />";
echo "<div id=\"errorbox\" style=\"display: none\">";

} else {
echo "There was a problem sending the mail. Check your code and make sure that the e-mail address $to is valid";
}}

echo '<form action="http://' . $_SERVER['SERVER_NAME']  . $_SERVER['PHP_SELF'] ."?". $_SERVER['QUERY_STRING'] . '" method="post" name="form1" onsubmit="return validate_form(this)" name="[object]">';

create a new page and in text view paste the below :

Code: Select all

{simple_mailer} 
<div style="font-weight: bold; color: red" id="errorbox"></div>
Name: <input name="name" size="19" type="text" /><br />   <br /> 
E-Mail: <input name="email" size="19" type="text" /><br />   <br />
<input name="check[]" value="blue_color" type="checkbox" /> Blue<br />
<input name="check[]" value="green_color" type="checkbox" /> Green<br />
<input name="check[]" value="orange_color" type="checkbox" /> Orange<br /> <br />
<input value="yes" name="radio" type="radio" /> YES<br />   
<input value="no" name="radio" type="radio" /> NO <br />   <br />  
 <select name="drop_down"> 
<option value="php">php</option>
 <option value="xml">xml</option> 
<option value="asp">asp</option>
 <option value="jsp">jsp</option>
 </select>   <br />   <br /> 
Message:<br />   
<textarea rows="9" name="message" cols="30"></textarea><br />   <br />   
<input value="Submit" name="submit" type="submit" /> 
</form>
place this javascript in your "head" section to validate the form fields:

Code: Select all

<__script__ type="text/javascript">
function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
if (apos<1||dotpos-apos<2) 

  { 
document.getElementById("errorbox").innerHTML="";
document.getElementById('errorbox').innerHTML +=  alerttxt ;return false;}
else {return true}
}
}

function validate_required(field,alerttxt)
{
with (field)
{
if (value==null||value=="")
 { 
document.getElementById("errorbox").innerHTML="";
document.getElementById('errorbox').innerHTML +=  alerttxt ;return false;}
else {return true}
}
}

function validate_form(form1)
{
with (form1)
{

if (validate_email(email,"Not a valid e-mail address!")==false)
  {email.focus();return false;}
if (validate_required(name,"Name must be filled out...")==false)
  {name.focus();return false;}
if (validate_required(email,"Email must be filled out...")==false)
  {email.focus();return false;}

}
}
</__script>

Now you have a simple contact form that has all the elements, drop down,radio,text input and text area.
it has error checking using client side javascript to make sure certain fields are filled in and will echo errors above the form.
if form is filled in correctly the results are echo'd on the same page and emailed...

Re: UDT mini Mailer

Posted: Mon Feb 09, 2009 7:01 pm
by pedes
when putting the code in UDT it's giving an error "incorrect code"

Peter

Re: UDT mini Mailer

Posted: Mon Feb 09, 2009 7:33 pm
by Nullig
I think the first line of the UDT should be:

if(!empty($_POST['name'])

Nullig

Re: UDT mini Mailer

Posted: Mon Feb 09, 2009 11:58 pm
by pedes
I think the first line of the UDT should be:

if(!empty($_POST['name'])
this is correct my best Nullig

and even there should be a closing tag for the form, otherwise the layout get messed up

so behind the formfields i used a UDT with just this in it:
echo '';
now it is working ok

Thx for your help
Peter

Re: UDT mini Mailer

Posted: Wed Feb 11, 2009 6:36 pm
by mw
sorry, the copy/paste missed those two items as noted above.
I fixed up the code to include it.