/    Sign up×
Community /Pin to ProfileBookmark

Mail (not) function(ing)!

Hi guys,
I am still a rookie in PHP. I am hoping that a gentle PHP mate could help me out on something…
I setup a website with a php contact page, a form to mail style contact.
It should be simple (I know!), but it is not working…!?

Thanks in advance guys….

The code of the “FormToEmail.php” file follows:

<?php

$my_email = “[email protected]“;

$continue = “/”;

$errors = array();

// Remove $_COOKIE elements from $_REQUEST.

if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

// Validate email field.

if(isset($_REQUEST[’email’]) && !empty($_REQUEST[’email’]))
{

$_REQUEST[’email’] = trim($_REQUEST[’email’]);

if(substr_count($_REQUEST[’email’],”@”) != 1 || stristr($_REQUEST[’email’],” “)){$errors[] = “Email address is invalid”;}else{$exploded_email = explode(“@”,$_REQUEST[’email’]);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = “Email address is invalid”;}else{if(substr_count($exploded_email[1],”.”) == 0){$errors[] = “Email address is invalid”;}else{$exploded_domain = explode(“.”,$exploded_email[1]);if(in_array(“”,$exploded_domain)){$errors[] = “Email address is invalid”;}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match(‘/^[a-z0-9-]+$/i’,$value)){$errors[] = “Email address is invalid”; break;}}}}}}

}

// Check referrer is from same site.

if(!(isset($_SERVER[‘HTTP_REFERER’]) && !empty($_SERVER[‘HTTP_REFERER’]) && stristr($_SERVER[‘HTTP_REFERER’],$_SERVER[‘HTTP_HOST’]))){$errors[] = “You must enable referrer logging to use the form”;}

// Check for a blank form.

function recursive_array_check_blank($element_value)
{

global $set;

if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

}

}

recursive_array_check_blank($_REQUEST);

if(!$set){$errors[] = “You cannot send a blank form”;}

unset($set);

// Display any errors and exit if errors exist.

if(count($errors)){foreach($errors as $value){print “$value<br>”;} exit;}

if(!defined(“PHP_EOL”)){define(“PHP_EOL”, strtoupper(substr(PHP_OS,0,3) == “WIN”) ? “rn” : “n”);}

// Build message.

function build_message($request_input){if(!isset($message_output)){$message_output =””;}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace(“_”,” “,ucfirst($key)).”: “.build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).”, “;}}}}return rtrim($message_output,”, “);}

$message = build_message($_REQUEST);

$message = $message . PHP_EOL.PHP_EOL.”– “.PHP_EOL.”Thank you for using FormToEmail from http://FormToEmail.com“;

$message = stripslashes($message);

$subject = “FormToEmail Comments”;

$subject = stripslashes($subject);

$from_name = “”;

if(isset($_REQUEST[‘name’]) && !empty($_REQUEST[‘name’])){$from_name = stripslashes($_REQUEST[‘name’]);}

$headers = “From: {$from_name} <{$_REQUEST[’email’]}>”;

mail($my_email,$subject,$message,$headers);

?>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>

<head>
<title>Form To Email PHP script from FormToEmail.com</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
</head>

<body bgcolor=”#ffffff” text=”#000000″>

<div>
<center>
<b>Thank you <?php if(isset($_REQUEST[‘name’])){print stripslashes($_REQUEST[‘name’]);} ?></b>
<br>Your message has been sent
<p><a href=”<?php print $continue; ?>”>Click here to continue</a></p>
</center>
</div>

</body>
</html>

to post a comment
PHP

8 Comments(s)

Copy linkTweet thisAlerts:
@DragonkaiJul 22.2008 — You should try posting in php code tags before posting code.

I didn't have a look at your code, but I came across something before.. apparently using mail functions can make your email get sent to junk...

I suggest using something like an MX exchange.. I don't quite know what I'm talking about, because I forgot how I did something once.

Anyhow, here's a tutorial:

It can help you, as it uses "advanced" email techniques.

http://www.sitepoint.com/article/advanced-email-php
Copy linkTweet thisAlerts:
@Phill_PaffordJul 22.2008 — Here is your code in PHP tags

[code=php]
<?php

$my_email = "[email protected]";
$continue = "/";
$errors = array();

// Remove $_COOKIE elements from $_REQUEST.
if(count($_COOKIE)){
foreach(array_keys($_COOKIE) as $value){
unset($_REQUEST[$value]);
}
}

// Validate email field.
if(isset($_REQUEST['email']) && !empty($_REQUEST['email'])) {
$_REQUEST['email'] = trim($_REQUEST['email']);

if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")) {
$errors[] = "Email address is invalid";
} else {
$exploded_email = explode("@",$_REQUEST['email']);

if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])) {
$errors[] = "Email address is invalid";
} else {
if(substr_count($exploded_email[1],".") == 0) {
$errors[] = "Email address is invalid";
} else {
$exploded_domain = explode(".",$exploded_email[1]);

if(in_array("",$exploded_domain)) {
$errors[] = "Email address is invalid";
} else {
foreach($exploded_domain as $value) {
if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)) {
$errors[] = "Email address is invalid"; break;
}
}
}
}
}
}
}

// Check referrer is from same site.
if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))) {
$errors[] = "You must enable referrer logging to use the form";
}

// Check for a blank form.
function recursive_array_check_blank($element_value) {
global $set;

if(!is_array($element_value)) {
if(!empty($element_value)) {
$set = 1;
}
} else {
foreach($element_value as $value) {
if($set) {
break;
}

recursive_array_check_blank($value);
}
}
}

recursive_array_check_blank($_REQUEST);

if(!$set) {
$errors[] = "You cannot send a blank form";
}

unset($set);

// Display any errors and exit if errors exist.
if(count($errors)) {
foreach($errors as $value) {
print "$value<br>";
}

exit;
}

if(!defined("PHP_EOL")) {
define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "rn" : "n");
}

// Build message.
function build_message($request_input) {
if(!isset($message_output)) {
$message_output ="";
}

if(!is_array($request_input)) {
$message_output = $request_input;
} else {
foreach($request_input as $key => $value) {
if(!empty($value)) {
if(!is_numeric($key)) {
$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;
} else {
$message_output .= build_message($value).", ";
}
}
}
}
return rtrim($message_output,", ");
}

$message = build_message($_REQUEST);
$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."Thank you for using FormToEmail from http://FormToEmail.com";
$message = stripslashes($message);

$subject = "FormToEmail Comments";
$subject = stripslashes($subject);

$from_name = "";

if(isset($_REQUEST['name']) && !empty($_REQUEST['name'])) {
$from_name = stripslashes($_REQUEST['name']);
}

$headers = "From: {$from_name} <{$_REQUEST['email']}>";

mail($my_email,$subject,$message,$headers);

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form To Email PHP script from FormToEmail.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<div>
<center>
<b>Thank you
<?php if(isset($_REQUEST['name'])){print stripslashes($_REQUEST['name']);} ?>
</b>
<br>
Your message has been sent
<p>
<a href="<?php print $continue; ?>">Click here to continue</a>
</p>
</center>
</div>
</body>
</html>

[/code]


could you post the error your getting?
Copy linkTweet thisAlerts:
@freddygustoauthorJul 22.2008 — Sorry for misposting the code like that....Thanks Phill !

Well, with regards to the error, that's the interesting part. When I click send button.... I get exactly what I'd expect:

"Thank you test name

Your message has been sent

Click here to continue"

But... I do not get the email in my inbox and neither in the junk folder. So, there is definitly something not working in this chain of events... just cannot spot it!!
Copy linkTweet thisAlerts:
@Phill_PaffordJul 22.2008 — do you have access to the mail log?

or command line?

try running this if you dont have command line access

#1 make a test sample text file with a message inside.

text.txt

message = Hello World

#2 make a php script to test the mail function
[code=php]
<?php

$cmd = cat /path/to/text.txt | mail [email protected];
echo $cmd;

?>
[/code]


wait for your email, should be very fast
Copy linkTweet thisAlerts:
@QuidamJul 22.2008 — Could be a problem with your smtp server.
Copy linkTweet thisAlerts:
@SyCoJul 22.2008 — Possibly the host too. GoDaddy has it's own way of sending mail from scripts. Check your host allows it.
Copy linkTweet thisAlerts:
@PenelopaApr 07.2010 — Try to get neccessary information here form creator or here php arrays.
Copy linkTweet thisAlerts:
@SyCoApr 07.2010 — This is a very old thread.
×

Success!

Help @freddygusto spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.17,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @nearjob,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,
)...