Ajax联系表单在Gmail中转为垃圾邮件

时间:2015-07-31 12:26:20

标签: php ajax

<?php
if($_POST)
{
    $to_email       = "example@gmail.com"; //Recipient email, Replace with own email here

    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

        $output = json_encode(array( //create JSON data
            'type'=>'error', 
            'text' => 'Sorry Request must be Ajax POST'
        ));
        die($output); //exit script outputting json data
    } 

    //Sanitize input data using PHP filter_var().
    $user_name      = filter_var($_POST["user_name"], FILTER_SANITIZE_STRING);
    $user_email     = filter_var($_POST["user_email"], FILTER_SANITIZE_EMAIL);
    $country_code   = filter_var($_POST["country_code"], FILTER_SANITIZE_NUMBER_INT);
    $phone_number   = filter_var($_POST["phone_number"], FILTER_SANITIZE_NUMBER_INT);
    $subject        = filter_var($_POST["subject"], FILTER_SANITIZE_STRING);
    $message        = filter_var($_POST["msg"], FILTER_SANITIZE_STRING);

    //additional php validation
    if(strlen($user_name)<4){ // If length is less than 4 it will output JSON error.
        $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!'));
        die($output);
    }
    if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
        $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!'));
        die($output);
    }
    if(!filter_var($country_code, FILTER_VALIDATE_INT)){ //check for valid numbers in country code field
        $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in country code'));
        die($output);
    }
    if(!filter_var($phone_number, FILTER_SANITIZE_NUMBER_FLOAT)){ //check for valid numbers in phone number field
        $output = json_encode(array('type'=>'error', 'text' => 'Enter only digits in phone number'));
        die($output);
    }
    if(strlen($subject)<3){ //check emtpy subject
        $output = json_encode(array('type'=>'error', 'text' => 'Subject is required'));
        die($output);
    }
    if(strlen($message)<3){ //check emtpy message
        $output = json_encode(array('type'=>'error', 'text' => 'Too short message! Please enter something.'));
        die($output);
    }

    //email body
    $message_body = $message."\r\n\r\n-".$user_name."\r\nEmail : ".$user_email."\r\nPhone Number : (".$country_code.") ". $phone_number ;

    //proceed with PHP email.

    $headers = 'From: '.$user_name.'' . "\r\n" .
    'Reply-To: '.$user_email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

    $send_mail = mail($to_email, $subject, $message_body, $headers);

    if(!$send_mail)
    {
        //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
        $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
        die($output);
    }else{
        $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_name .' Thank you for your email'));
        die($output);
    }
}
?>

任何人都可以帮助我吗?我认为它是一个体面的形式,从我在网上看到的,有标题等。不知道为什么这将是gmail垃圾邮件,试图找到解决方案,并做出改变,但没有运气。

3 个答案:

答案 0 :(得分:1)

您的代码中没有明显错误.GMail(和其他邮件程序)需要包含更多信息才能将垃圾邮件分数提高到垃圾邮件阈值以上。

考虑使用更精确的邮件程序系统,例如PHPMailer http://phpmailer.worxware.com/或其他类似的类,以生成您的电子邮件。这些将生成所需的标题并格式化电子邮件,以防止大多数(如果不是全部)邮件客户端将电子邮件标记为垃圾邮件。

答案 1 :(得分:1)

无论您使用库发送邮件是什么,如果它以垃圾邮件显示,那么请始终检查邮件数据中的标题。

请检查您的标题信息我肯定您错过了一些东西。

对于任何简单邮件,都需要一些最小标头信息。

喜欢,

$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: MyCompany <abc@mycompany.com>' . "\r\n"; 

您可以根据需要添加更多内容。祝你好运['}

答案 2 :(得分:1)

检查您的邮件标题(在Gmail本身中),看看为什么垃圾邮件分数很高。 请注意,许多垃圾邮件过滤器会检查电子邮件中是否只有HTML还是只有图像,这可能是导致垃圾邮件分数过高的原因。

我对Gmail垃圾邮件过滤器了解不多,但我知道我们的垃圾邮件过滤器会检查这类内容。

相关问题