PHP邮件被发送到垃圾邮件

时间:2015-03-01 15:29:11

标签: php email spam spam-prevention email-spam

我知道这个网站上有很多类似的问题,但没有一个能帮助我。

我有以下PHP代码:

<?php
$to = "mymail@inbox.com";
$from = "no-reply@heygee.com";
$subject = "Confirm your registration!";
$message = "Please follow this link to confirm your registration: www.bit.ly/32106";

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: HeyGee! <no-reply@heygee.com>" . "\r\n" .
"Reply-To: mymail@inbox.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

$ok = @mail($to, $subject, $message, $headers, "-f " . $from);   
?>

假设mymail@inbox.com是我的测试电子邮件。每当我将邮件发送到我的地址时,我总是会在垃圾邮件文件夹中收到邮件。这是为什么?是否有任何更正或技巧可以防止邮件进入垃圾邮件?

感谢。

2 个答案:

答案 0 :(得分:3)

您的邮件被发送到垃圾邮件文件夹的原因可能是因为您的电子邮件内容或接收方无法验证该电子邮件是否实际来自from地址中的所述域,即如果发件人(您)有权代表heygee.com发送电子邮件。

内容部分很容易纠正。你需要避免错误的语法,模糊的链接(例如说google.com但指向example.com的链接),等等。你的信息应该措辞好(不包括垃圾邮件中常见的那些词),最好是还包括unsubscribe link(如果发送到邮件列表)。

现在是第二个也是困难的部分。您在from地址中编写的域应该与执行此邮件脚本的域相同,或者应由此域的TXT记录授权以代表其发送邮件。最简单的方法是(假设您有DNS访问发送域名的权限)添加TXT SPF记录,允许脚本所在的服务器的IP代表它发送邮件。 示例SPF记录:

"v=spf1 ip6:1080::8:800:200C:417A/96 -all"

以上记录表示Allow any IPv6 address between 1080::8:800:0000:0000 and 1080::8:800:FFFF:FFFF.

结帐: SPF (Wikipedia)

此外,您可以在这里查看http://www.openspf.org/

现在,如果您没有DNS访问权限,只需将from地址的域名更改为服务器的域名,就可以修复它。

希望它有所帮助。

答案 1 :(得分:0)

这与您自己的编程无关。将电子邮件过滤为垃圾邮件是在客户端进行的,没有什么可以改变的(如果有的话,数以百万计的垃圾邮件发送者会这样做)

您遇到的问题是您的电子邮件看起来像垃圾邮件。尝试写一个更好的电子邮件,身体长于1行。我也会从主题中删除感叹号;这也是让它看起来像垃圾邮件的东西。

如果您的垃圾邮件检测系统为您提供了有关其被标记为垃圾邮件的详细信息(SpamAssassin可以根据其配置方式执行此操作),则使用该信息来修复您发送的电子邮件。