【问题标题】:Ajax Contact form going to spam in Gmail [closed]Ajax 联系表单将在 Gmail 中发送垃圾邮件 [关闭]
【发布时间】:2015-07-31 12:26:19
【问题描述】:
<?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 垃圾邮件,试图找到解决方案并做出改变,但没有运气。

【问题讨论】:

  • 我们假设冰箱如何利用您的代码制作任何东西?至少在提出适当的问题时表现出一些努力。
  • 对不起,我在意识到之前点击了帖子:(

标签: php ajax


【解决方案1】:

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

请检查您的标题信息,我确定您错过了什么。

对于任何简单的邮件,都需要一些最低限度的标题信息。

喜欢,

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

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

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

【讨论】:

  • 如果您得到了答案,请接受并标记为答案,以便遇到同样问题的朋友直接获得想法并轻松获得......谢谢
【解决方案2】:

检查您的邮件标头(在 Gmail 本身中),了解垃圾邮件得分为何如此之高。 请注意,许多垃圾邮件过滤器会检查电子邮件中是否只有 HTML 或只有图像,这可能是导致垃圾邮件得分高的原因。

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 非常感谢您的建议,我将切换到 phpmailer :)
    • 太棒了。 PHPMailer 很棒!
    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2013-01-06
    相关资源
    最近更新 更多