AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 30130
Accepted
mrwhy2009
mrwhy2009
Asked: 2009-06-23 22:51:09 +0800 CST2009-06-23 22:51:09 +0800 CST 2009-06-23 22:51:09 +0800 CST

为什么从我的 PHP 应用程序发送的电子邮件被视为垃圾邮件?

  • 772

我有这个有趣的东西。当我向 yahoo、gmail 或 hotmail 用户发送电子邮件时。如果我包含一个链接,它将被视为垃圾邮件。但是如果我删除了链接,它将变成“收件箱”,而不是垃圾邮件。奇怪吧??

我的邮件服务器有什么关系吗??如何防止我的电子邮件被视为垃圾邮件?我的电子邮件内容中需要链接 :)

php代码:

// Send Email to the user
$headers =  'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: [email protected]' . "\r\n";

// Email Variables

$toUser  = '[email protected]'; // recipient
$subject = "Subject HERE!!"; // subject
$body    = '<div style="font-family:Arial; color:#333;">
                Some content here ...
        <a href="www.google.com" target="_blank"> Link here</a> 
        </div>';

if(mail($toUser,$subject,$body,$headers)){
    echo "Email SENT" . '<br>';
} else {
    echo "Email cannot sent" . '<br>';
};
email spam blacklist-prevention
  • 5 5 个回答
  • 4957 Views

5 个回答

  • Voted
  1. Best Answer
    RainyRat
    2009-06-24T00:41:13+08:002009-06-24T00:41:13+08:00

    猜测一下,邮件服务器会根据文本分析和一大堆其他他们不会告诉任何人的事情来计算每封邮件的垃圾邮件分数 - +3 表示标题中包含非单词,+2 表示嵌入式链接等。很有可能,您生成的一封电子邮件(无链接)的常规分数相当高,但仍然足够低,邮件可以通过。

    一些反垃圾邮件解决方案足以将垃圾邮件分数粘贴在邮件标题中 - 在那里寻找类似“X-Spam-Score”的内容。如果你能找出通过邮件的分数是多少,那将告诉你它与被标记为垃圾邮件的距离有多近(垃圾邮件阈值通常约为 12 左右,但他们都有自己的系统) . 我怀疑一条干净的消息的分数会很高,添加链接只是最后一根稻草。

    要注意的另一件事是,如果您从脚本生成邮件,请确保它填写了所有适当的标题,因为缺少的标题会使您的垃圾邮件得分提高一点。来自发送邮件的服务器与其中继到的任何服务器之间的 SMTP 对话的日志也会有所帮助。

    • 4
  2. Dave Cheney
    2009-06-24T01:49:28+08:002009-06-24T01:49:28+08:00

    您需要确保您的邮件服务器(很可能与您的 php 代码运行所在的机器相同)已正确配置为合法发送邮件。您需要确保一些事情是正确的,以避免从该机器转发的任何邮件被标记为垃圾邮件。

    首先,您的邮件服务器必须使用它的规范主机名,这与在命令行上运行时返回HELO的命令的值相同。hostname下面postfix是 中myhostname变量的值/etc/postfix/main.cf。

    其次,DNS 中服务器的正向和反向指针必须匹配,并且必须与上面的主机名值匹配。例如

    [dave@odessa ~]$ host odessa.cheney.net
    odessa.cheney.net has address 64.85.168.249
    [dave@odessa ~]$ host 64.85.168.249
    249.168.85.64.in-addr.arpa domain name pointer odessa.cheney.net.
    

    第三,检查您的邮件服务器是否没有充当开放中继。如果您的邮件服务器被配置为中继来自其他主机的邮件,您应该非常小心,以确保这些主机本身不是开放中继,或者受到适当保护,不会接受来自未经身份验证的主机的邮件。为您检查,例如http://www.checkor.com/ 。

    第四,看你的信息内容。从您在上面发布的示例中,您似乎正在发送一小段 HTML,这很可能是带有垃圾邮件过滤器的一组警报(看看您的平均垃圾邮件的组成)。您应该始终使用电子邮件库来撰写邮件,如果您发送 HTML 邮件,您应该包含一个text/plain变体。

    最后,对于大型网站,我们的一些邮件会被标记为垃圾邮件,这只是平均法则。您有责任确保遵守发送自动或批量电子邮件的相应规定,例如CAN-SPAM。其中最重要的部分是人们可以直接取消订阅您的邮件列表。如果你让人们很难做到这一点,那么你的用户更有可能点击他们邮件客户端中的大型垃圾邮件按钮,该按钮将被反馈到邮件主机并针对你的服务器工作。

    • 4
  3. bortzmeyer
    2009-06-24T01:34:59+08:002009-06-24T01:34:59+08:00

    每个电子邮件站点都会应用自己的垃圾邮件检测规则。您将找不到不被归类为垃圾邮件的完美方法。乍一看,!在主题和完全在 HTML 中的内容是垃圾邮件的良好指标......

    发送电子邮件至[email protected],您将收到一份自动报告,其中分析了它的外观和垃圾信息。它可以给你一些想法。

    • 1
  4. Hirvox
    2009-06-23T23:27:28+08:002009-06-23T23:27:28+08:00

    您可以从代码中做的很少。虽然您可以使用 DKIM 之类的东西,但不能保证收件人会使用它。就个人而言,我会专注于让您的电子邮件看起来不像是即发即弃的垃圾邮件,而更像是用户实际要求的“官方”邮件。您能否编辑您的帖子以包含您的系统发送的实际电子邮件?

    • 0
  5. Dan
    2009-06-24T02:36:59+08:002009-06-24T02:36:59+08:00

    大约 18 个月前,我们在将电子邮件发送到雅虎地址时遇到了问题,因为该链接包含一个新注册的域。

    我们通过检查退回的电子邮件确定了这一点。雅虎本身报告“您的电子邮件已被延迟”,但其他几个邮件服务器在错误消息中给出了拒绝投递的线索。将域更改回更旧、更成熟的域解决了该问题。

    还要考虑链接中的文字(例如说像 DOWNLOAD FREE SOFTWARE NOW 而不是Download software version 1.0)和链接本身的域名。

    • 0

相关问题

  • 你使用什么样的邮件服务器?

  • 针对大量邮件的 SMTP 服务的建议 [关闭]

  • 多操作系统环境的首选电子邮件客户端

  • Exchange 2007 的备份解决方案

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve