从mail()发送的所有邮件都转到垃圾邮件但是正确的标题等

时间:2012-01-10 13:33:13

标签: php html

我一直在做很多阅读,但还是找不到解决方案。我正在建立一个网站,一旦他们提交了表单,就会通过电子邮件向其用户发送凭证。我遇到的问题是脚本发送的邮件被垃圾邮件过滤器筛选为垃圾邮件,但它不是用户提交的。这是我正在使用的脚本:

<?php 

error_reporting(0); 

include("/home/users/web/b2243/moo.wheree/inc/event.inc"); 
include("/home/users/web/b2243/moo.wheree/inc/ad.inc"); 

$boundary = md5(time()) . "-2"; 
$eol = "\r\n"; 
$subject = "Tonights wheree voucher - $offer"; 

$fromaddress = "no-reply@wheree.co.uk"; 
$fromname = "wheree"; 

$headers = ''; 
$headers .= "Message-ID: <".time()."-".$fromaddress.">" . $eol; 
$headers .= "Date: ".date('r'). $eol; 
$headers .= "From: ".$fromname. "<".$fromaddress.">" . $eol; 

$headers .= "Reply-To: ".$fromname. "<".$fromaddress.">" . $eol; 
$headers .= "Return-Path: ".$fromname."<".$fromaddress.">" . $eol;

$headers .= "X-Mailer: PHP v" .phpversion(). $eol; 
$headers .= 'MIME-Version: 1.0' . $eol; 
$headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"" . $eol . $eol; 

$headers .= "This is a MIME-formatted message.". $eol . $eol; 

$msg = ''; 

//text 
$msg .= "--" . $boundary . $eol; 
$msg .= "Content-Type: text/plain; charset=gb2312" . $eol; 
$msg .= "Content-Transfer-Encoding: 8bit" . $eol; 
$msg .= "Content-Disposition: INLINE" . $eol; 
$msg .= "Content-Description: INLINE Description;" . $eol; 
$msg .= strip_tags(str_replace("<br>", "\n", $rBody)); 
$msg .= $eol . $eol; 

//html 
$msg .= "--" . $boundary . $eol; 
$msg .= "Content-Type: text/html; charset=utf-8;" . $eol; 
$msg .= "Content-Transfer-Encoding: 8bit" . $eol; 
$msg .= "Content-Disposition: INLINE" . $eol; 
$msg .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">" . $eol; 
$msg .= 'Message Contents' . $eol; 
$msg .= $eol . $eol; 

$mail_sent = mail($email, $subject, $msg, $headers, "-f no-reply@wheree.co.uk"); 

// Check if Mail is sent 
if ($mail_sent) 
include("/home/users/web/b2243/moo.wheree/inc/sent.php"); 
else { 
echo "<br> Message not sent, <a href="/">have another go</a>.<br>"; 
} 

?>

该网站托管在共享主机方案上,这可能是问题吗?我也听说过反向DNS?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果您是从共享主机帐户发送的,那么您应该知道两件重要的事情。

  1. 与您的网站在同一IP地址上托管的网域可能多达数千个。无论其他所有网站使用电子邮件做什么都是您无法控制的,并且知识产权可能很容易被其他网站的“黑暗活动”列入几个黑名单。
  2. 正如您已经提到的,某些邮件服务器会对您的发送邮件服务器的IP地址进行反向查找。如果它与您的域名不匹配(它不会),则反垃圾邮件工具可能会将其视为“可疑”。
  3. 您可以做的最好的事情是让您的用户/成员知道他们应该在您的邮件服务器/客户端上将您的域列入白名单,以提高交付机会。如果这还不够好,你应该认真考虑一些专用的托管解决方案,如VPS,专用服务器甚至你自己的PI空间。

答案 1 :(得分:1)

这可能是很多。共享主机很可能是一个问题,是的;在黑名单查找工具(例如http://www.mxtoolbox.com/blacklists.aspx)上检查服务器的IP。 (这不仅仅与共享主机相关,也可能发生在专用主机上 - 多年来我已经为新的专用服务器分配了15-20个IP,至少有2个已经在黑名单上。现在是第一件事当我收到新服务器时,我会检查。)在您的域上设置SPF以明确将该IP列为有效发件人(无论接收邮件服务器和客户端检查或信任SPF是否属于接收邮件服务器和客户端,但它是某些东西;但它不太可能覆盖活动的黑名单记录。)

现在,运行邮件服务器是后方非常大的痛苦。我很久以前选择每年花一点钱来外包(在我的情况下,用Runbox)。我的代码通过他们的SMTP服务器发送,而不是我自己管理的代码。在我的特定情况下,我只是通过它们发送(我没有对收到的电子邮件进行任何自动处理,所以我只是让它们转到Google Apps)但你可以发送和接收所有的通常的协议。这对我来说很有用,可以极大地减少麻烦。还有很多其他公司也将为您提供邮件服务,我不会为这个特定的商店编写商业广告。

相关问题