我遇到了一件奇怪的事情。当我向 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>';
};
答案1
据我猜测,邮件服务器会根据文本分析和一系列其他不会告诉任何人的信息来计算您的每封邮件的垃圾邮件分数 - 标题中含有非文字为 +3,嵌入链接为 +2,等等。很有可能,您生成的电子邮件之一(无链接)的常规分数相当高,但仍然足够低以使邮件通过。
一些反垃圾邮件解决方案非常巧妙地将垃圾邮件分数粘贴在邮件标题中 - 在其中查找类似“X-Spam-Score”的内容。如果您能找出通过的邮件的分数,这将告诉您它距离被标记为垃圾邮件有多近(垃圾邮件阈值通常约为 12 左右,但它们都有自己的系统)。我怀疑干净邮件的分数会很高,而添加链接只是最后一根稻草。
另一件需要注意的事情是,如果您使用脚本生成邮件,请确保它填写了所有适当的标题,因为缺少标题会使您的垃圾邮件分数增加不少。发送邮件的服务器与邮件中继服务器之间的 SMTP 对话日志也会有所帮助。
答案2
您需要确保您的邮件服务器(很可能是运行 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
变体。
最后,对于大型网站,我们的一些邮件会被标记为垃圾邮件,这只是平均规律。您有责任确保遵守发送自动或批量电子邮件的相应规定,例如反垃圾邮件。其中最重要的部分是为人们提供一种直接取消订阅邮件列表的方式。如果你让这变得困难,那么你的用户更有可能大吃一惊垃圾邮件按钮在他们的邮件客户端中,该按钮将被反馈给邮件主机并与您的服务器进行操作。
答案3
每个电子邮件网站都会应用自己的垃圾邮件检测规则。您找不到完美的方法来避免被归类为垃圾邮件。乍一看,主题中的 ! 和完全以 HTML 编写的内容是垃圾邮件的良好指标...
发送电子邮件至[email protected]
,您将收到一份自动报告,其中会分析该邮件的格式和垃圾邮件性质。它可以为您提供一些想法。
答案4
大约 18 个月前,我们在将电子邮件递送到 Yahoo 地址时遇到了问题,因为该链接包含一个新注册的域名。
我们通过检查退回的电子邮件发现了这个问题。雅虎本身报告“您的电子邮件已被延迟”,但其他几个邮件服务器在其拒绝投递的错误消息中给出了线索。将域名改回较旧、较成熟的域名解决了这个问题。
还请考虑链接中的文字(例如,说“立即下载免费软件”,而不是“下载软件版本1.0) 以及链接本身的域名。