mail()标头不会阻止邮件进入垃圾邮件文件夹

时间:2013-02-12 14:13:25

标签: php email spam

我在我的PHP中使用这些标题来确保电子邮件避开了垃圾邮件文件夹,但它们似乎没有运行良好。

 $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
 $headers .= "From: hello@somebodylovesyou.co.uk <hello@somebodylovesyou.co.uk>\r\n"; 
 $headers .= "Reply-To: hello@somebodylovesyou.co.uk <hello@somebodylovesyou.co.uk>\r\n"; 
 $headers .= "Return-Path: hello@somebodylovesyou.co.uk <hello@somebodylovesyou.co.uk>\r\n";
 $headers .= "X-Priority: 3\r\n"; 
 $headers .= "X-MSMail-Priority: Normal\r\n"; 

上面的代码中是否有任何可能会改变或移除可能有助于此工作的代码?

3 个答案:

答案 0 :(得分:2)

同意@MarcB:phpMailer很容易,并为你完成所有这些。转到here并下载。然后按照示例here进行操作。你应该在大约十分钟内启动并运行。

然而,真正关键的一点是,你应该告诉phpMailer通过一种不同的方法发送邮件,只需使用PHP的mail()函数。

通过您自己的PHP服务器发送邮件通常是邮件最终被标记为垃圾邮件的最终原因,因为您的PHP服务器无法被接收邮件系统识别为电子邮件的合法来源。所以他们认为这是垃圾邮件。像SPF和DomainKeys这样的系统可以用来告诉全世界你的服务器是一个合法的电子邮件服务器,但它们可能需要时间来学习和配置,甚至更多的时间让消息通过所有第三方电子邮件服务器那里。

使用PHP的mail()功能,您无法选择;邮件是通过您的PHP服务器发送的,因此,除非您非常谨慎地配置您的域名,否则很容易将其标记为垃圾邮件。

但是使用phpMailer,可以通过其他路由发送,例如your main SMTP server,甚至第三方系统like gmail

通过像这样的公认的电子邮件服务器发送很可能解决您的问题,但它只能通过phpMailer(或类似的类)完成,而不能使用PHP的内置mail()函数。

同样,所有这些都很容易用phpMailer进行配置。

你可以花一个星期的时间砸墙,另一个星期设置SPF和DomainKeys,等待一两个月等待Hotmail和朋友开始认识你的PHP服务器作为合法的电子邮件源....或者你可以花十分钟学习phpMailer和其他十或二十分钟重写你的代码来使用它,让它通过一个已知的合法邮件服务器发送邮件,并立即接受你的电子邮件。你的选择。

答案 1 :(得分:1)

避免垃圾邮件过滤器远远超出您通过电子邮件发送的标头。如果您的努力停止在上面的代码中,您将发现您在避免垃圾邮件过滤器方面取得成功的最佳程度。

您应该记住一些提示,以帮助您的邮件避免被标记为sapam:

  1. 为您的域设置DomainKeys

  2. 为您的域设置SPF

  3. 在电子邮件中添加取消订阅链接

  4. 为您的邮件服务器的IP地址设置反向PTR

答案 2 :(得分:-1)

$ headers。=“Content-type:text / html; charset = utf-8 \ r \ n”;

将适用于MSN或HOTMAIL