Jump to content

PHP Send Mail Code .


bcooperz

Recommended Posts

Hey my name is Brandon, im quite new to php but im improving and I really want to get into web design soon.

 

Well lucky for you guys I was bored so i decided to create a Contact Us page.

Just so you know MY contact us requires the user to be logged in to use it otherwise it redirects them to the login.php page and outputs a error saying "you need to be logged in to access this page", however i changed this contact us page so the user does not have to be logged in and it just requires all the fields to be entered.

One thing I diden't add was a system to check if the email has a "@" sign in it, so you can be more confident that the email is real, I don't find this that important because if the user is leaving out a "@" sign then it's likely they are just wanting to send a fake email and they will do it regardless of a check or not.

 

Here's The Code.

<?php

function mysql_prep($value) {

$magic_quotes_active = get_magic_quotes_gpc();

$new_enough_php = function_exists("mysql_real_escape_string"); // i.e PHP >= v4.3.0

if($new_enough_php){ // PHP v4.3.0 or higher

if ($magic_quotes_active){ $value = stripslashes($value); }

$value = mysql_real_escape_string($value);

}else{ //Before PHP v4.3.0

//if magic quotes aren't already on then add slahes manually

if(!$magic_quotes_active){ $value = addslashes($value); }

// if magic quotes are active then the slashes already exist

}

return $value;

}

 

function redirect_to($location = NULL){

if($location != NULL){

header("Location: {$location}");

exit;

}

}

?>

 

<?php

if (isset($_POST['submit'])){

// The form has been submitted

$errors = array();

 

// Perform validations on the form

$required_fields = array('title', 'email', 'message');

foreach($required_fields as $fieldname){

if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){

$errors[] = $fieldname;

}

}

 

$field_with_lengths = array('title' => 20, 'email' => 50);

foreach($field_with_lengths as $fieldname => $maxlength) {

if (strlen(trim($_POST[$fieldname])) > $maxlength) {

$errors[] = $fieldname; }

}

 

// Set the needed variables here

$email = $_POST['email'];

$title = $_POST['title'];

$message = $_POST['message'];

 

if (empty($errors)){

// Their are no errors in the form

$headers = 'From: ' . $email . "\r\n" .

'Reply-To: [email protected]' . "\r\n" .

'X-Mailer: PHP/' . phpversion();

 

$sentmail=mail("[email protected]","$title","$message", "$headers");

 

// if your email successfully sent

if($sentmail){

echo "Your Email Has been sent";

}else{

echo "Cannot send email";

}

}else{

$count = count($errors);

if($count == 1){

echo "Their Was {$count} Error In The Form" . "<br />";

echo "<b>";

print_r(implode(", ", $errors));

echo "</b>";

}else{

echo "Their Was {$count} Error's In The Form" . "<br />";

echo "<b>";

print_r(implode(", ", $errors));

echo "</b>";

}

}

 

}else{

// The Form Has Not Been Submitted

$email = "";

$title = "";

$message = "";

}

?>

 

<html>

<head>

<title>Contact Us</title>

</head>

<body>

 

<form action="contact.php" method="post">

Title of message : <input type="text" name="title" maxlength="20" value="" /><br />

Your Email : <input type="text" name="email" maxlength="50" value="" /><br />

Message : <br /><textarea name="message" rows="20" cols="80"></textarea><br /><br />

<input type="submit" name="submit" value="Contact Us" /><br />

</form>

</body>

</html>

 

Now in order for this to work you will need to have a domain or localhost will also do fine if you have it set up with a email system, some free domains will work as long as they have a email sending capability and php enabled.

Also one thing you will want to do is change "[email protected]" in that code to your email so the users of your website are sending the emails to your email

 

Thanks, BcooperZ.

Link to comment
https://forums.phpfreaks.com/topic/234959-php-send-mail-code/
Share on other sites

using a simple function like:

 

<?php
function isEmail($email) { // Email address verification

return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));

}
?>

 

is good practise because its not to stop humans from sending a fake email, rather bots, good to contain a captcha too.

Link to comment
https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207466
Share on other sites

UPDATE! Added a email checking system so now it actually checks if the email contains a "@" or not.

NEW CODE!

<?php
function mysql_prep($value) {
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists("mysql_real_escape_string"); // i.e PHP >= v4.3.0
if($new_enough_php){ // PHP v4.3.0 or higher
if ($magic_quotes_active){ $value = stripslashes($value); }
$value = mysql_real_escape_string($value);
}else{ //Before PHP v4.3.0
//if magic quotes aren't already on then add slahes manually
if(!$magic_quotes_active){ $value = addslashes($value); }
// if magic quotes are active then the slashes already exist
}
return $value;
}

function redirect_to($location = NULL){
	if($location != NULL){
	header("Location: {$location}");
	exit;
}
}	
?>

<?php
if (isset($_POST['submit'])){
// The form has been submitted
$errors = array();

// Set the needed variables here
$email = $_POST['email'];
$title = $_POST['title'];
$message = $_POST['message'];

// Perform validations on the form
$required_fields = array('title', 'email', 'message');
foreach($required_fields as $fieldname){
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){
$errors[] = $fieldname;
}
}

$field_with_lengths = array('title' => 20, 'email' => 50);
foreach($field_with_lengths as $fieldname => $maxlength) {
if (strlen(trim($_POST[$fieldname])) > $maxlength) {
$errors[] = $fieldname; }
}

if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
$errors[] = "In-Correct Email Format";
}

if (empty($errors)){
// Their are no errors in the form
					$headers = 'From: ' . $email . "\r\n" .
					'Reply-To: [email protected]' . "\r\n" .
					'X-Mailer: PHP/' . phpversion();

					$sentmail=mail("[email protected]","$title","$message", "$headers");

				// if your email successfully sent
				if($sentmail){
				echo "Your Email Has been sent";
				}else{
				echo "Cannot send email";
				}
}else{
$count = count($errors);
if($count == 1){
echo "Their Was {$count} Error In The Form" . "<br />";
echo "<b>";
print_r(implode(", ", $errors));
echo "</b>";
}else{
echo "Their Was {$count} Error's In The Form" . "<br />";
echo "<b>";
print_r(implode(", ", $errors));
echo "</b>";
}
}

}else{
// The Form Has Not Been Submitted
$email = "";
$title = "";
$message = "";
}
?>

<html>
<head>
<title>Contact Us</title>
</head>
<body>

<form action="test.php" method="post">
Title of message : <input type="text" name="title" maxlength="20" value="" /><br />
Your Email : <input type="text" name="email" maxlength="50" value="" /><br />
Message : <br /><textarea name="message" rows="20" cols="80"></textarea><br /><br />
<input type="submit" name="submit" value="Contact Us" /><br />
</form>
</body>
</html>

Link to comment
https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207469
Share on other sites

Updated my second post with the

 tag thanks for that i am new to this forum and diden't know it had that function.

hehe no problem, I thought i let you know, because most people stop reading after they see such a post.

anyway cheers for sharing your script. I assume (from the looks of it)  it was working already?

Link to comment
https://forums.phpfreaks.com/topic/234959-php-send-mail-code/#findComment-1207474
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.