2012-03-28 13 views
6

Używam klasy phpmailer do wysyłania wiadomości e-mail. Obecnie Gmail i Yahoo nie oznaczają wiadomości e-mail jako spamu, ale hotmail zawsze to robi. Jak mogę temu zapobiec? Mój kod znajduje się poniżej.PHPmailer wysyłający wiadomości do spamu w hotmailu. jak naprawić?

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

Prawdopodobnie takie rzeczy jak rekordy SPF serwera, odwrotny DNS i tym podobne. (niezbyt pomocny, wiem, ale dlatego to jest komentarz!) – jprofitt

+0

również, jeśli to pomaga, używam serwera vps, a nie udostępnionego z hostgatorem – Anonymous

+1

Czy 'From' i' AddReplyTo' mają być różnymi adresami lub czy to literówka? Jeśli masz to w swoim rzeczywistym kodzie, może to spowodować, że poczta zostanie przefiltrowana jako spam. –

Odpowiedz

16

Dotyczy to ustawienia kilku nagłówków wiadomości, aby pokonać filtry.

Dodałem następujące czynności, aby na samym początku php podmiotami wysyłającymi przesyłki CreateHeader metody ...

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

że zostało zrobione jakiś czas temu - Ja nie powrócił za około rok myślę! Spróbuj i wróć, jeśli nadal masz problemy.

+0

Świetne rozwiązanie! To działa. –

+0

jeśli mógłbyś zaakceptować jako odpowiedź, byłbym na Księżycu! (ludzie lubią to, gdy akceptujesz odpowiedzi - otrzymują kredyt i masz lepszą reputację) –

+0

Nie jestem właścicielem pytania, człowieku!)) –

Powiązane problemy