【问题标题】:PHP e-mail to spamPHP 电子邮件到垃圾邮件
【发布时间】:2012-07-24 20:44:15
【问题描述】:

我正在尝试通过电子邮件向新注册用户发送电子邮件验证 (PHP) 但我不明白,为什么会向垃圾邮件发送电子邮件,我已经检查了类似的问题,所有答案都是关于标题的,

让我知道这些标题以及如何验证它们似乎有点复杂,
通过发件人网站?假设我以 user@google.com 的身份发送,实际的服务器域是 domain.com,它怎么知道?它是垃圾邮件的主要原因之一吗?
我用的是VPS,有什么关系吗?
我只是想了解为什么电子邮件会被检查为垃圾邮件的明确/简单原因

如果我从服务器 IP 而不是域本身发送呢

【问题讨论】:

  • 您应该阅读反垃圾邮件技术以了解您需要做什么。主要是 SPF,其次是使用什么标头,最后是正确的内容(发送 HTML 邮件时的文本替代版本)
  • 第一个 - 标题,第二个 - 内容,第三个 - 质量。仅包含一行单词的电子邮件可能是潜在的垃圾邮件。仅包含 3 个单词 + 链接的电子邮件比有效电子邮件更垃圾。反垃圾邮件检查会查找此类规则。您的电子邮件是否超过一行?
  • 如果它对您很重要,邮件不会成为垃圾邮件,最快的方法是实现外部 smtp。喜欢邮戳或sendgrid

标签: php email header spam


【解决方案1】:

当您使用 VPS 时,您可以考虑在您的服务器上设置DKIMSPF,它们会被 Gmail 等邮件服务用来将您的服务器归类为合法服务器。

【讨论】:

    【解决方案2】:

    您的域上配置一个电子邮件地址,将me@mydomain.com替换为您在您的域上新创建的电子邮件地址,并将id@hotmailOrgmail.com替换为您在以下脚本。

    还要在以下脚本中将Your Name 替换为您的姓名,并在您的服务器上进行测试:

    <?php
    
        $myName = "Your Name";
        $myEmailAddressonDomain = "me@mydomain.com";
        $myPreferredEmailAddresson  = "id@hotmailOrgmail.com";
        $mail = $_POST['email_field'];
        $clientName = $_POST['name_field'];
        $subject = $_POST['subject_field'];
        $text = $_POST['message_field'];
    
        $headers = 'From: "$name" <$yourEmailAddressonDomain>'.PHP_EOL.'Reply-To: '.$_POST['mail'].PHP_EOL;
        $to = '"$yourname" <$myPreferredEmailAddresson>';
        $message = $text.PHP_EOL.PHP_EOL."---".PHP_EOL."From: ".$name." <".$mail.">";
    
        /* Server-side form validations */
        $err = "Error with ";
    
    
        if (!checkLen($name)) {
            $err.='Name';
        } else if (!checkLen($mail) && !checkEmail($mail)) {
            $err.='Email';
        } else if (!checkLen($subject)) {
            $err.='Subject';
        } else if (!checkLen($text)) {
            $err.='Message';
        }
    
        if (strlen($err)>11) {
            echo $err.' field';
            exit;
        }
        /* end validations */
    
        elseif (mail($to, $subject,$message, $headers)) {
            echo "<span style='color: #336600'>Your message has been sent.</span>";
        } else {
            echo "An error occurred, please try again.";
        }
    
        function checkLen($str,$len=1)
        {
            return isset($str) && mb_strlen(strip_tags($str),"utf-8") > $len;
        }
    
        function checkEmail($str)
        {
            return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
        }
    
    
    ?>
    

    电子邮件将通过您域的电子邮件地址进入您的 Hotmail/Gmail 收件箱(或任何非垃圾邮件)文件夹。

    注意: 在收到的电子邮件中单击回复会显示客户的电子邮件地址(正如我们在上面的Reply-To 标头中设置的那样)

    进行适当的更改,一切顺利。

    【讨论】:

      【解决方案3】:

      大多数邮件服务器都会使用Reverse DNS lookup 来防止来自 domain.com 的人假装来自 otherdomain.com。它将检查发送电子邮件的 IP 地址是否解析为与电子邮件发件人相同的域名。雅虎等大公司也会使用DKIM来验证你。

      如果您的邮件内容不多,或者您向一台服务器发送了很多相同的内容,您的邮件通常会以批量/垃圾邮件告终。

      这是一篇关于 what web developers should know about sending email 的好文章,可能有助于您理解该主题。

      【讨论】:

        【解决方案4】:

        1) 检查标题。您可以使用任何电子邮件发送库,例如 PHPMailer (http://code.google.com/a/apache-extras.org/p/phpmailer/wiki/PHPMailer#Documentation_and_Resources)

        2) 检查托管服务器。如果您使用的是共享主机,那么很可能它已被电子邮件域列入黑名单。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-12
          • 1970-01-01
          • 2011-08-22
          • 2013-10-17
          • 1970-01-01
          • 1970-01-01
          • 2013-08-02
          相关资源
          最近更新 更多