2012-03-28 18 views
6

Sto utilizzando la classe phpmailer per inviare e-mail. Attualmente gmail e yahoo non contrassegnano le e-mail come spam, ma l'hotmail lo fa sempre. Come posso evitare questo? Il mio codice è sottoPHPmailer invia posta a spam in hotmail. come risolvere?

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

Probabilmente cose come record SPF del server, DNS inverso e simili. (non troppo utile lo so, ma questo è il motivo per cui è un commento!) – jprofitt

+0

anche se aiuta, io uso un server vps, non uno condiviso con hostgator – Anonymous

+1

Si suppone che 'From' e' AddReplyTo' siano indirizzi diversi o è un errore? Se hai questo nel tuo codice reale, potrebbe causare il filtraggio della posta come spam. –

risposta

16

Ciò comporta l'impostazione di alcune intestazioni di posta per battere i filtri.

ho aggiunto quanto segue alla fin dall'inizio del mailer php CreateHeader metodo ...

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

che è stato fatto qualche tempo fa - non ho rivisitato per circa un anno credo! Provalo e torna se hai ancora problemi.

+0

Ottima soluzione! Funziona. –

+0

se potessi accettare come risposta sarei al settimo cielo! (le persone lo accolgono quando si accettano le risposte - ottengono credito e si ottiene una reputazione migliore) –

+0

Non sono un dubbio proprietario, amico!)) –