2012-03-28 4 views
6

Ich verwende die phpmailer-Klasse, um E-Mails zu senden. Derzeit markieren Gmail und Yahoo keine E-Mails als Spam, aber Hotmail tut es immer. Wie kann ich das verhindern? Mein Code ist unten.PHPmailer Senden von E-Mails an Spam in Hotmail. wie repariert man?

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

Wahrscheinlich Dinge wie Server SPF-Datensätze, Reverse-DNS und dergleichen. (nicht zu hilfreich, ich weiß, aber das ist, warum es ein Kommentar ist!) – jprofitt

+0

auch wenn es hilft, ich benutze einen vps-Server, nicht eine gemeinsame mit Hostgator – Anonymous

+1

Ist die 'From' und' AddReplyTo' sollen verschiedene Adressen sein oder Ist das ein Tippfehler? Wenn Sie das in Ihrem tatsächlichen Code haben, kann dies dazu führen, dass die Mail als Spam gefiltert wird. –

Antwort

16

Dazu müssen einige Mail-Header gesetzt werden, um die Filter zu übertreffen.

Ich habe folgendes auf den Beginn von PHP-Mailer CreateHeader Methode ...

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

hinzugefügt, die vor einiger Zeit getan wurde - ich habe nicht etwa ein Jahr revisited Ich denke! Probieren Sie es aus und kommen Sie zurück, wenn Sie noch Probleme haben.

+0

Große Lösung! Es klappt. –

+0

Wenn Sie als Antwort akzeptieren könnten, wäre ich überglücklich! (Leute mögen es, wenn Sie Antworten annehmen - sie erhalten Kredit und Sie erhalten einen besseren Ruf) –

+0

Ich bin nicht Frage Eigentümer, Mann!)) –