2012-03-28 71 views
6

我正在使用phpmailer類發送電子郵件。目前gmail和yahoo不會將電子郵件標記爲垃圾郵件,但hotmail總是這樣做。我怎樣才能防止這一點?我的代碼如下。PHPmailer將郵件發送到hotmail中的垃圾郵件。怎麼修?

require_once('../PHPMailer/class.phpmailer.php'); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail = new PHPMailer(); 

$mail->IsSMTP(); // set mailer to use SMTP 
$mail->Host = "mail.example.com"; // specify main and backup server 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Username = "xxx"; // SMTP username -- CHANGE -- 
$mail->Password = "xxx"; // SMTP password -- CHANGE -- 
$mail->Port = "25"; // SMTP Port 

$mail->From = "[email protected]"; //From Address -- CHANGE -- 
$mail->FromName = "xxx"; //From Name -- CHANGE -- 
$mail->AddAddress($email, $passerusername); //To Address -- CHANGE -- 
$mail->AddReplyTo("[email protected]", "xxx"); //Reply-To Address -- CHANGE -- 

$mail->WordWrap = 50; // set word wrap to 50 characters 
$mail->IsHTML(false); // set email format to HTML 

$mail->Subject = "AuthSMTP Test"; 
$mail->Body = "AuthSMTP Test Message!"; 

if(!$mail->Send()) 
{ 
    echo "Message could not be sent. <p>"; 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    exit; 
} 

echo "Message has been sent"; 
+0

可能是像服務器SPF記錄,反向DNS等。 (不是太有幫助,我知道,但這就是爲什麼它是一個評論!) – jprofitt 2012-03-28 00:56:46

+0

如果它可以幫助,我使用一個VPS服務器,而不是與hostgator共享一個 – Anonymous 2012-03-28 01:00:19

+1

是從'和'AddReplyTo'應該是不同的地址或是一個錯字?如果您在實際的代碼中包含這些信息,可能會導致郵件被過濾爲垃圾郵件。 – 2012-03-28 01:23:57

回答

16

這涉及設置幾個郵件標題擊敗過濾器。

我加入以下到PHP郵寄CreateHeader方法最開始的......

$result = ''; 

$result .= $this->HeaderLine("Organization" , SITE); 
$result .= $this->HeaderLine("Content-Transfer-encoding" , "8bit"); 
$result .= $this->HeaderLine("Message-ID" , "<".md5(uniqid(time()))."@{$_SERVER['SERVER_NAME']}>"); 
$result .= $this->HeaderLine("X-MSmail-Priority" , "Normal"); 
$result .= $this->HeaderLine("X-Mailer" , "Microsoft Office Outlook, Build 11.0.5510"); 
$result .= $this->HeaderLine("X-MimeOLE" , "Produced By Microsoft MimeOLE V6.00.2800.1441"); 
$result .= $this->HeaderLine("X-Sender" , $this->Sender); 
$result .= $this->HeaderLine("X-AntiAbuse" , "This is a solicited email for - ".SITE." mailing list."); 
$result .= $this->HeaderLine("X-AntiAbuse" , "Servername - {$_SERVER['SERVER_NAME']}"); 
$result .= $this->HeaderLine("X-AntiAbuse" , $this->Sender); 

這是以前做了一些時間 - 我還沒有重新一年左右我的想法!如果你仍然有問題,試試它並回來。

+0

偉大的解決方案!有用。 – 2012-08-07 15:48:03

+0

如果你能接受答案我會在月球上! (人們喜歡它,當你接受答案 - 他們得到信貸,你得到更好的聲譽) – 2012-08-08 10:55:20

+0

我不是問題的主人,男人!)) – 2012-08-09 11:03:57