2012-03-28 32 views
6

Tôi đang sử dụng lớp phpmailer để gửi email. Hiện tại gmail và yahoo không đánh dấu email là spam, nhưng hotmail luôn làm như vậy. Làm thế nào tôi có thể ngăn chặn điều này? Mã của tôi là dưới đây.PHPmailer gửi thư đến spam trong thư hotmail. làm thế nào để khắc phục?

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

Có lẽ những thứ như bản ghi SPF trên máy chủ, DNS ngược và các mục tương tự. (không quá hữu ích tôi biết, nhưng đây là lý do tại sao nó là một bình luận!) – jprofitt

+0

cũng nếu nó giúp, tôi sử dụng một máy chủ vps, không phải là một chia sẻ với hostgator – Anonymous

+1

Có 'From' và' AddReplyTo' nghĩa vụ phải là địa chỉ khác nhau hoặc đó là một lỗi đánh máy? Nếu bạn có mã đó trong mã thực tế của mình, nó có thể khiến thư bị lọc là spam. –

Trả lời

16

Điều này liên quan đến việc đặt một vài tiêu đề thư để đánh bại các bộ lọc.

tôi đã thêm dòng sau vào đầu thật của bưu phẩm php CreateHeader phương pháp ...

$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); 

đã được thực hiện một số thời gian trước đây - tôi đã không xem xét lại trong khoảng một năm tôi nghĩ! Hãy thử nó và trở lại nếu bạn vẫn còn có vấn đề.

+0

Giải pháp tuyệt vời! Nó hoạt động. –

+0

nếu bạn có thể chấp nhận câu trả lời tôi sẽ ở trên mặt trăng! (mọi người thích nó khi bạn chấp nhận câu trả lời - họ nhận được tín dụng và bạn nhận được danh tiếng tốt hơn) –

+0

Tôi không phải là chủ sở hữu câu hỏi, người đàn ông!)) –

Các vấn đề liên quan