Aide - Recherche - Membres - Calendrier
Version complète : fonction mail() et courrier indésirable
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Cyber6ou
Bonsoir @ tous,

les mails envoyés par mon script arrivent dans la section courrier indésirables de hotmail (en fait il est reconnu comme spam dans la pluspart des bal).
CODE
<?php



$nom = 'auteur@site.fr';

$mail = 'auteur@site.fr';

$objet = 'Test';

$message = 'Cliquez <a href="http://www.monsite.fr">ici</a>';

$destinataire = 'destinataire@bal.com';



// Version MIME

$headers = "MIME-Version: 1.0\r\n";

// mail au format HTML

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

// Expéditeur et adresse de réponse

$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";





// Envoi du mail

if (mail($destinataire,$objet,$message,$headers))

{

echo 'Email envoyé';

}

else

{

echo 'L\'email n\'a pas été envoyé !!!';

}



?>


En cherchant un peu partout je suis tombé sur ca http://www.webrankinfo.com/forums/topic_pa...age_15630_0.htm

Ils disent de rajouter
CODE
$headers .= "X-Sender: <www.site.tld>\n";

$headers .= "X-Mailer: PHP\n";

$headers .= "X-auth-smtp-user: email@site.tld \n";

$headers .= "X-abuse-contact: abuse@site.tld";

:arrow: A quoi correspond email@site.tld et abuse@site.tld
:arrow: J'ai rajouté ces lignes tel quel et ce ne fonctionne pas, faut-il les adapter par rapport à l'adresse de mon site, et si oui comment, je comprends pas tout la :oops:

Qq1 peut-il me venir en aide ......
Antoine
On en a déjà parlé je pense. As-tu fais une recherche ?

Sinon, ces deux adresses doivent être de ton domaine (authentification smtp et abus)
Cyber6ou
Je trouvé ca http://dream.media-box.net/post_recherche_...6-rfc.html+2045 mais je ne vois pas de solution dans ce post ....
Dadou
Il te manque ce que l'on appelle la frontiere : $boundary = "-----=" . md5( uniqid ( rand() ) ); Qui devrait correctement séparer les differents éléments de ton entete http://www.phpcodeur.net/articles/php/emails

CODE
<?php

 // on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière

 $boundary = "-----=" . md5( uniqid ( rand() ) );



 $headers  = "From: \"toto\"<toto@titi.fr>\n";

 // on indique qu'on a affaire à un email au format html et texte et

 // on spécifie la frontière (boundary) qui servira à séparer les deux parties

 // ainsi que la version mime

 $headers .= "MIME-Version: 1.0\n";

 $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";



 $message_txt  = "Salut Alphonse\n\n";

 $message_txt .= "Ca va ?\n";

 $message_txt .= "C'était juste pour savoir..\n\n";

 $message_txt .= "A plus\n";

 $message_txt .= "toto";



 $message_html  = "<html><body><b>Salut Alphonse</b><br><br>";

 $message_html .= "Ca va ?<br>";

 $message_html .= "<font color=\"red\">C'était juste pour savoir..</font><br><br>";

 $message_html .= "A plus<br>";

 $message_html .= "<u>toto</u>";



 $message  = "This is a multi-part message in MIME format.\n\n";

 $message .= "--" . $boundary . "\n";

 $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

 $message .= "Content-Transfer-Encoding: quoted-printable\n\n";

 $message .= $message_txt;

 $message .= "\n\n";

 $message .= "--" . $boundary . "\n";

 $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

 $message .= "Content-Transfer-Encoding: quoted-printable\n\n";

 $message .= $message_html;

 $message .= "\n\n";

 $message .= "--" . $boundary . "--\n";



 mail('alphonse@lycos.fr', 'Comment tu vas', $message, $headers);

?>
qwix
Dadou a raison, lorsque tu souhaites envoyer un mail HTML MIME il te faut une boundary, c'est à dire une chaine qui permettra de distinguer le message des headers et du message au format texte qu'il est bien de prévoir aussi au cas ou les personnes ne puissent pas lire des mails HTML.

smile.gif
Cyber6ou
Merci pour vos réponses, mais qqchose doit encore m'echapper car le mail arrive toujours dans le courrier indésirable de hotmail :evil:

J'ai copié collé le code de Dadou j'ai mis l'adresse de mon site dans
QUOTE
$headers  = \"From: \\"toto\\"<toto@titi.fr>\n\";
et ll'adresse hotmail de destination dans
QUOTE
mail('alphonse@lycos.fr', 'Comment tu vas', $message, $headers);

CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>Document sans nom</title>

</head>



<?php

 // on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière

 $boundary = "-----=" . md5( uniqid ( rand() ) );



 $headers  = "From: \"inscription@monsite.fr\"<inscription@monsite.fr>\n";

 // on indique qu'on a affaire à un email au format html et texte et

 // on spécifie la frontière (boundary) qui servira à séparer les deux parties

 // ainsi que la version mime

 $headers .= "MIME-Version: 1.0\n";

 $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";



 $message_txt  = "Salut Alphonse\n\n";

 $message_txt .= "Ca va ?\n";

 $message_txt .= "C'était juste pour savoir..\n\n";

 $message_txt .= "A plus\n";

 $message_txt .= "toto";



 $message_html  = "<html><body><b>Salut Alphonse</b><br><br>";

 $message_html .= "Ca va ?<br>";

 $message_html .= "<font color=\"red\">C'était juste pour savoir..</font><br><br>";

 $message_html .= "A plus<br>";

 $message_html .= "<u>toto</u>";



 $message  = "This is a multi-part message in MIME format.\n\n";

 $message .= "--" . $boundary . "\n";

 $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

 $message .= "Content-Transfer-Encoding: quoted-printable\n\n";

 $message .= $message_txt;

 $message .= "\n\n";

 $message .= "--" . $boundary . "\n";

 $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

 $message .= "Content-Transfer-Encoding: quoted-printable\n\n";

 $message .= $message_html;

 $message .= "\n\n";

 $message .= "--" . $boundary . "--\n";



 mail('cyber6ou@hotmail.com', 'Test !', $message, $headers);

 

?>



<body>

</body>

</html>

J'ai oublié qqchose .... ?
qwix
Essaie avec un autre compte mail que hotmail.

smile.gif
amoss
QUOTE
Dadou a raison, lorsque tu souhaites envoyer un mail HTML MIME il te faut une boundary, c'est à dire une chaine qui permettra de distinguer le message des headers et du message au format texte qu'il est bien de prévoir aussi au cas ou les personnes ne puissent pas lire des mails HTML.

smile.gif


Salut Qwix,
est ce que ca veut dire que le message text n'apparait que si le html est refusé dans ce cas ???
car sinon avoir deux fois le contenu dont un sans la mise en forme, c'est moche quand même !
Dadou
Oui le message texte n'apparait que si le client refuse le HTML.

Cyber6ou > tu as peut être l'adresse de l'expediteur en "liste noire", parce que pour moi avec ce script ca fonctionne chez hotmail
amoss
ok merci
Cyber6ou
j'ai testé avec plusieurs adresses hotmail et c'est le meme probleme je ne comprends pas pourquoi. Je vais tester avec une autre adresse que hotmail.

Je vous tiens au courant :wink:
Antoine
Si dans hotmail tous le courrier venant d'un destinataire qui n'est pas dans la liste est redirigé vers le courrier indésirable, tu as peu de chance de te retrouver dans cette boite biggrin.gif
Cyber6ou
J'ai activé le niveau étendu du filtre
QUOTE
Étendu - la plupart des courriers indésirables sont interceptés
Je pense que c'est la configuration de la pluspart des gens .....
J'ai testé sur un bal de laposte.net et le html n'est pas reconnu :evil: (j'ai gardé les options par défaut)
Dadou
J'ai un script de gestion de formulaire par mail qui fonctionne sur hotmail, si cela t'interesse : http://www.normandie-creation.com/formmail.zip
Dadou
Ah, non, en effet il part dans la boite courrier indésirable.

En lui disant de le mettre en courrier désirable, il affiche :

QUOTE
Les informations nécessaires contenues dans la ligne De : de ce message sont absentes ou endommagées. Les options du filtre de courrier indésirable ne peuvent pas être configurées sans ces informations. Le message a été transféré vers votre boîte de réception.


:? Eétrange, pourtant tous les entêtes y sont
Cyber6ou
Dommage je ne sais pas si il y a une solution a mon probleme ....
Dadou
Malheureusement, depuis la nouvelle politique de Hotmail sur le spam, beaucoups se heurtent à se genre de soucis avec les scripts de mail :evil:
Cyber6ou
Je vais procéder autrement pour l'inscription. Je vais envoyer un mail en text\plain donnant un mot de passe provisoire pour la 1ere connection. Le mot de passe de l'utlisateur sera activé par la suite.

Par contre pour les envois de newsletters je suis marron :evil:
Ou alors j'envois un mail indiquant qu'une newsletter est disponible sur le site, mais c'est pas top ! Si qq1 a d'autres idées je suis preneur smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.