2013-08-05 6 views
-1

J'utilise un code pour envoyer un e-mail avec une pièce jointe, l'envoi d'e-mails, mais la chose est en cours de spam. Quelqu'un peut-il deviner la raison? voici mon code:Email Pièce jointe Spam

$to = '[email protected]'; 
$subject = 'PHP Mail Attachment Test'; 
$bound_text = "jimmyP123"; 
$bound = "--".$bound_text."\r\n"; 
$bound_last = "--".$bound_text."--\r\n"; 

$headers = "From: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n" 
    ."Content-Type: multipart/mixed; boundary=\"$bound_text\""; 

$message .= "If you can see this MIME than your client doesn't accept MIME types!\r\n" 
    .$bound; 

$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n" 
    ."Content-Transfer-Encoding: 7bit\r\n\r\n" 
    ."hey my <b>good</b> friend here is a picture of regal beagle\r\n" 
    .$bound; 

$file = file_get_contents("http://reality.com/images/ezlogo.png"); 

$message .= "Content-Type: image/png; name=\"http://reality.com/images/ezlogo.png\"\r\n" 
    ."Content-Transfer-Encoding: base64\r\n" 
    ."Content-disposition: attachment; file=\"http://reality.com/images/ezlogo.png\"\r\n" 
    ."\r\n" 
    .chunk_split(base64_encode($file)) 
    .$bound_last; 
if(mail($to, $subject, $message, $headers)) 
{ 
    echo 'MAIL SENT'; 
} else { 
    echo 'MAIL FAILED'; 
} 
+4

S'il est marqué comme spam, c'est * généralement * en raison de son contenu. Si vous pouvez obtenir une copie de la vérification post-spam par courrier électronique et regarder les en-têtes bruts, cela indiquera souvent la principale raison pour laquelle l'e-mail a été marqué comme spam. Indépendamment, ce n'est pas un problème de codage - c'est un problème de contenu. –

+0

Peut-être dupliquer de [ce post] (http://stackoverflow.com/questions/8075400/mail-generated-in-php-going-to-spam). – deepakb

+2

Un e-mail envoyé depuis un serveur différent de l'adresse e-mail 'from' est facilement marqué comme spam. – cgTag

Répondre

1

Une grande marque sur les filtres anti-spam est l'envoi de contenu html sans un corps html bien formé.

ie. vous avez une section

$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n" 
."Content-Transfer-Encoding: 7bit\r\n\r\n" 
."hey my <b>good</b> friend here is a picture of regal beagle\r\n" 
.$bound; 

Vous devez définir:

$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n" 
."Content-Transfer-Encoding: 7bit\r\n\r\n" 
."<html><head></head><body>hey my <b>good</b> friend here is a picture of regal beagle</body></html>\r\n" 
.$bound; 

il ne ressemble pas à ça ferait beaucoup de différence, et à l'œil, il ne fait aucune différence, mais il fait une différence le filtre. La meilleure chose à faire serait d'obtenir que l'expéditeur reçoive aussi l'email, pour "voir l'original", où vous obtenez le code entier de l'email qui donne généralement un score de spam dans les en-têtes et les tests échoués, vous donner quelques informations sur ce que vous devez faire pour réparer l'email à transmettre.

+0

Appreciate bro, Quand changer le spam mail est stoppé, mais mon image de pièce jointe est montrée comme garbage (BLOB). Je ne peux pas trouver mon attachement. – nanbatman

+0

désolé, mettre le '' au mauvais endroit, ils devaient être AVANT le '\ r \ n', la réponse éditée pour refléter cela, devrait maintenant montrer la pièce jointe correctement – bizzehdee

+0

Oh! encore spam maintenant, mais la pièce jointe est bien. – nanbatman

1

Dans votre code vous a montré le « de » l'adresse ci-dessous:

$headers = "From: [email protected]\r\n"; 

Assurez-vous que ce soit une adresse valide que vous utilisez.

En outre, vous pouvez essayer de régler les en-têtes supplémentaires tels que Return-Path et Répondre à

$header .= "Reply-To: Admin <[email protected]>\r\n"; 
$header .= "Return-Path: Admin <[email protected]>\r\n"; 

Source - http://www.transio.com/content/how-pass-spam-filters-php-mail

Hope this helps!