2016-06-04 12 views
0

Ich habe keine Ahnung, warum dieses Skript E-Mails in den Spam-Ordner sendet. Ich habe versucht, es mit SMTP zu beheben, aber es war nutzlos, es funktioniert nur mit Hotmail. Ich verwende MAMP für lokales Hosting, da meine Arbeit noch nicht online ist.PHP-Skript senden Sie E-Mail in Spam-Ordner

Warum? Wie kann ich dieses Problem beheben?

Script:

<?php 

require("PHPMailer.php"); 
session_cache_limiter('nocache'); 
header('Expires: ' . gmdate('r', 0)); 
header('Content-type: application/json'); 


$to   = 'myEmail'; // put your email here 

$email_template = 'simple.html'; 

$subject = strip_tags($_POST['subject']); 
$email  = strip_tags($_POST['email']); 
$name  = strip_tags($_POST['name']); 
$message = nl2br(htmlspecialchars($_POST['message'], ENT_QUOTES)); 
$result  = array(); 



$mail = new PHPMailer(); 

$mail->IsSMTP(); 



$mail->Host = "smtp.gmail.com"; 

$mail->SMTPAuth = true; 

$mail->SMTPSecure = 'ssl'; 

$mail->Port = 465; 


// gmail account data 

$mail->Username = "myAccountGmail"; 

$mail->Password = "myPasswordGmail"; 


if(empty($name)){ 

    $result = array('response' => 'error', 'empty'=>'name', 'message'=>'<strong>Error!</strong>&nbsp; Name is empty.'); 
    echo json_encode($result); 
    die; 
} 

if(empty($email)){ 

    $result = array('response' => 'error', 'empty'=>'email', 'message'=>'<strong>Error!</strong>&nbsp; Email is empty.'); 
    echo json_encode($result); 
    die; 
} 

if(empty($message)){ 

    $result = array('response' => 'error', 'empty'=>'message', 'message'=>'<strong>Error!</strong>&nbsp; Message body is empty.'); 
    echo json_encode($result); 
    die; 
} 



$headers = "From: " . $name . ' <' . $email . '>' . "\r\n"; 
$headers .= "Reply-To: ". $email . "\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 


$templateTags = array(
    '{{subject}}' => $subject, 
    '{{email}}'=>$email, 
    '{{message}}'=>$message, 
    '{{name}}'=>$name, 
    '{{phone}}'=>$phone 
    ); 


$templateContents = file_get_contents(dirname(__FILE__) . '/email-templates/'.$email_template); 

$contents = strtr($templateContents, $templateTags); 

if (mail($to, $subject, $contents, $headers)) { 
    $result = array('response' => 'success', 'message'=>'<strong>Thank You!</strong>&nbsp; Your email has been delivered.'); 
} else { 
    $result = array('response' => 'error', 'message'=>'<strong>Error!</strong>&nbsp; Cann\'t Send Mail.' ); 
} 

echo json_encode($result); 

die; 
+0

In wen ist Spam-Ordner? Deine? Es ist wahrscheinlich, dass Ihr E-Mail-Anbieter Ihre Domain nicht kennt und davon ausgeht, dass Sie Spam sind. –

+0

Schreiben Sie die E-Mails wie Sie diesen Beitrag geschrieben haben? Denn wenn ich weiß warum. – jonrsharpe

+0

jonrsharpe, Kein Entschuldigung für mein Englisch :(Ich bin Italienisch – Andrea

Antwort

0

Google schreibt die Von und Reply-To-Header in Nachrichten, die Sie über senden es SMTP-Dienst auf Werte ist, die zu Ihrem Google Mail-Konto beziehen.

Die SMTP-Funktion von Google Mail ist nicht als offener Dienst oder als Weiterleitungsdienst gedacht. Wenn es Werte für den From-Header zulässt, würde dies die Stellung von Google bei Spam-Diensten erheblich beeinträchtigen, da es keine Möglichkeit gäbe, die Anmeldeinformationen des Absenders zu überprüfen.

Wenn Sie also einen anderen Wert in Form field von header festlegen, wird der Großteil des Empfängers mail servers dies als Spam betrachten.