Page 1 of 1

email went to junk in yahoo ans hotmail

Posted: Wed Mar 05, 2008 12:23 pm
by shahzad429
I have use following code. It is working fine I am able to send the email but in yahoo and hotmail the message is called junk why is it so. These are some thing you guys can help me. I am learning php now I started 1 month ago.



<?php

/* All form fields are automatically passed to the PHP script through the array $HTTP_POST_VARS. */
$email = $HTTP_POST_VARS['email'];
$subject = $HTTP_POST_VARS['subject'];
$message = $HTTP_POST_VARS['message'];
$headers = 'From: shahzad429@hotmail.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

/* PHP form validation: the script checks that the Email field contains a valid email address and the Subject field isn't empty. preg_match performs a regular expression match. It's a very powerful PHP function to validate form fields and other strings - see PHP manual for details. */
if (!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/", $email)) {
echo "<h4>Invalid email address</h4>";
echo "<a href='javascript:history.back(1);'>Back</a>";
} elseif ($subject == "") {
echo "<h4>No subject</h4>";
echo "<a href='javascript:history.back(1);'>Back</a>";
}

/* Sends the mail and outputs the "Thank you" string if the mail is successfully sent, or the error string otherwise. */
elseif (mail($email,$subject,$message,$headers)) {
echo "<h4>Thank you for sending email</h4>";
} else {
echo "<h4>Can't send email to $email</h4>";
}
?>

Re: email went to junk in yahoo ans hotmail

Posted: Wed Mar 05, 2008 4:23 pm
by Sekka
Your email will probably not conform to the many guidelines for a 'standard' email, and therefore fail the spam filter checks.

Please look at using a pre-made package for sending emails like Swift Mailer. Swift is really good, and they have done a lot of hard work for you to ensure the email being sent will be genuine and not filed as spam.

They've also created a great page with tips on how to make your email legit.

May I also make a quick comment on your code. You are using a deprecated global variable. Instead of $HTTP_POST_VARS, just use $_POST.