Mail en php avec pear qui arrive en spam

cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010 - 29 juin 2010 à 08:44
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010 - 5 juil. 2010 à 21:38
Bonjour à tous,

Après plusieurs recherche j'ai trouvé un forum qui parlait de Pear pour envoyer les mails depuis un site sans que ceci arrive en spam, j'ai donc télécharger les packages Pear nécessaire et j'ai construit mon script, mais les mails arrivent encore et toujours en spam, pouvez vous jeter un œil à mon script et me dire si vous y voyez une erreur s'il vous plait ?

Voici mon script :

<?php
if(isset($_POST['submit'])){
$erreur="";

// Nettoyage des entrées ;

while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}

// Formatage des entrées :

$mail = strip_tags(trim($mail));
$tel = trim(eregi_replace("[^0-9\ +]", "", $tel));
$messagefin = stripslashes(nl2br($message));

// Vérification des champs :

if(strlen($nom)<2){
$erreur.= "<li>Le champ « Votre Nom » est vide ou incomplet.</li>";
$errnom = 1;
}

if(strlen($prenom)<2){
$erreur.= "<li>Le champ « Votre Prénom » est vide ou incomplet.</li>";
$errprenom = 1;
}

if(strlen($email)<2){
$erreur.= "<li>Le champ « Votre Adresse Mail » est vide ou incomplet.</li>";
$errmail = 1;
}else{
$adresse = htmlentities($email);

function VerifierAdresseMail($adresse)
{
   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
   if(preg_match($Syntaxe,$adresse)) {
  return true;
  }
   else {
 return false;
 }
}
if(!VerifierAdresseMail($adresse)) {
$erreur.= "<li>La syntaxe de votre adresse e-mail n'est pas correcte.</li>";
$errmail = 1;
}
}

if(strlen($tel)<2){
$erreur.= "<li>Le champ « Votre N° de Tel » est vide ou incomplet.</li>";
$errtel = 1;
}



if($erreur==""){

// Création du message

// Package pear :
include 'Mail.php';
include 'Mail/mime.php';

// Paramètre du message :
$var0 = $lundi;
$var1 = $mardi;
$var2 = $mercredi;
$var3 = $jeudi;
$var4 = $vendredi;
$var5 = $samedi;

$jour = $var0.''.$var1.''.$var2.''.$var3.''.$var4.''.$var5;

$identite = $nom .' '.$prenom;

$Destinataire = 'moncompte@hotmail.fr';
$objet = 'Demande de rendez-vous';

/* ---------------------------------------------------------------------------------------------------- */
/*                                         CONSTRUCTION MAIL                                            */
/* ---------------------------------------------------------------------------------------------------- */

 
$sender = "$identite <$email>" ; // expéditeur
$recipient = $Destinataire; // destinataire
$subject = $objet; // objet du mail

// Construction en texte brut : 
$message_texte = 'Bonjour,'."\n";
$message_texte .= 'Vous recevez un message de :'.$identite."\n\n"; 
$message_texte .= 'Cette personne désire avoir un rendez-vous.'."\n\n";
$message_texte .= 'Voici ces jours de disponibles : '. $jour."\n";
$message_texte .= 'Voici son adresse Mail : '. $email."\n";
$message_texte .= 'Voici son numéro de tel : '. $tel."\n\n";
$message_texte .= 'Voici un message de cette personne : '. $messagefin."\n";

// Construction en HTML : 
$message_html = '<html>
Bonjour,


Vous recevez un message de : '.$identite.'


Cette personne désire avoir un rendez-vous.


Voici ces jours de disponibles : '.$jour.'

Voici son adresse Mail : '.$email.'

Voici son numéro de tel : '.$tel.'

Voici un message de cette personne :
 '.$messagefin.'


</html>';


/* ---------------------------------------------------------------------------------------------------- */
/*                                           HEADER DU MAIL                                             */
/* ---------------------------------------------------------------------------------------------------- */


 
$headers = array(
'From'          => $sender,
'Return-Path'   => $sender,
'Subject'       => $subject
);

// Choix du type header automatique suivant la boite mail du destinataire soit texte soit HTML :
$mime = new Mail_mime("\n");
$mime->setTXTBody($message_texte);
$mime->setHTMLBody($message_html);
$body = $mime->get();
$headers = $mime->headers($headers);


/* ---------------------------------------------------------------------------------------------------- */
/*                                           ENVOIE DU MAIL                                             */
/* ---------------------------------------------------------------------------------------------------- */

 
// Envoi du mail :
$mail =& Mail::factory('mail');

if ($mail->send($recipient, $headers, $body)) {
$ok_mail="true";
}else{
$erreur.="Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.";
}
}
}
?>


voici également le script html du formulaire :
<? if($ok_mail=="true"){ ?>
Le message ci-dessous nous a bien été transmis, et nous vous en remercions.,
----
,
----
<tt><?php echo $message_html; ?></tt>,
----
,
----
Nous allons y donner suite dans les meilleurs délais.
A bientôt.

<?php }else{ ?>
<?php if($erreur){ ?>
<?php echo $erreur; } ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
   		<hr />

    ">Votre Nom :,
" />

    	">Votre Prénom :,
" />

    	<hr />

  ">Votre Adresse Mail :,
" />

    	">Votre N° de tel :,
" />

    	<hr />

  Quels jours préférez-vous pour le rendez-vous ?,
> Lundi

> Mardi

> Mercredi

> Jeudi

> Vendredi

> Samedi

    	<hr />

     Laissez nous un message :,

----

<textarea cols="40" rows="9" name="message"><?php if ($message != "") echo $message; ?></textarea>

     	<hr />

     

 
    	<hr />

        </form>
        <?php } ?>

18 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
29 juin 2010 à 13:18
Salut,

S'il était possible pour l'émetteur d'un mail de faire en sorte que son mail ne soit jamais considéré comme du spam, alors les filtres en serviraient à rien. Sérieusement, est-ce que tu crois vraiment que tu puisse faire un mail passant toujours le filtre des MTA/MDA puis des MUA ? Vu que tu ne peux intervenir sur ces derniers, tu n'as aucun moyen de faire en sorte que tes mails ne passent jamais en spam. Ce que as lu sur "un forum" à propos de cette méthode miracle est soit pure charlatanerie soit concerne quelque chose d'autre de bien précis.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
29 juin 2010 à 19:53
Salut,

(je n'ai pas regardé le code )
TychoBrahe a signalé le plus important, cependant il serait intéressant de savoir si le mail est considéré comme du spam si tu l'envoies (avec les mêmes adresses bien sur) avec la fonction mail basique de php (en texte brut, pas de headers supplémentaires, message bateau d'une ligne, ... le plus simple possible en somme)

Si ça n'est pas le cas ça vaudra sans doute le coup de se pencher sur le code (quelques fois il ne faut pas grand chose pour qu'un mail soit considéré comme du spam)

Bon, j'imagine que si tu as opté pour cette solution c'est que c'était déjà le cas avant, mais dans le doute ...


Cordialement,


Kohntark -
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
30 juin 2010 à 13:56
Bonjour,

Merci à tout les deux TychoBrahe et Kohntark pour vos réponses.

Je vais quand même continuer à travailler dessus on ne sait jamais trouver une façon que ce foutu mail n'arrive pas dans les spams avec toutes les boites mails.

A bientôt
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
30 juin 2010 à 19:29
Re Dje33,

Puis je avoir une réponse à ma question :
cependant il serait intéressant de savoir si le mail est considéré comme du spam si tu l'envoies (avec les mêmes adresses bien sur) avec la fonction mail basique de php (en texte brut, pas de headers supplémentaires, message bateau d'une ligne, ... le plus simple possible en somme)


Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
30 juin 2010 à 23:59
Re Kohntark,

En fait j'utilise l'adresse mail de la personne qui as rempli le formulaire pour envoyer le mail, donc dans ce cas je ne peux pas avoir une réponse totalement juste à ta question qu'en penses tu ?

C'est pour cette raison que je n'ai pas testé cette méthode, peux être est-ce une mauvaise idée de ma part.

Cordialement,

Djé.
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
1 juil. 2010 à 00:02
Re,

En plus en y reprenant, c'est une mauvaise idée de ma part je peux utiliser une adresse mail fixe.

Je vais testé, merci, tu m'as fait réfléchir autrement !

Cordialement,

Djé.
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
1 juil. 2010 à 00:26
Encore,

J'ai essayé de cette manière très simple et cela fonctionne à merveille, pas de spam, ni sur hotmail, ni sur gmail, est-ce dût au fait que c'est un message en brut sans html ?
Je vais tester en html on verra bien.

En tout cas merci pour ton aide Kohntark !!

<?php
$from_email = "mail@expediteur.com";
$entetemail = "From: $from_email \n";
$entetemail .= "Cc: \n";
$entetemail .= "Bcc: \n";
$entetemail .= "Reply-To: $from_email \n"; 
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;


mail(
'mail@destinataire.com',
'un test',
"test du mail\n",
$entetemail
); 
?>
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
1 juil. 2010 à 00:45
Test HTML :

Gmail => Fonctionne
Hotmail => Spam

voici le code :

<?php
$from_email = "expediteur@hotmail.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "Cc: \n";
$entetemail .= "Bcc: \n"; // Copies cachées
$entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$entetemail .= "Content-Type: text/html; charset="iso-8859-1"\r\n" ;

$html = "<html>Voici un mail en HTML pour tester si cela fonctionne,
Histoire de durcir on va mettre une image :


</html>";


mail(
'destinataire@truc .fr',
'un test',
$html ,
$entetemail
); 
?>
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
2 juil. 2010 à 16:03
Hello,

J'avais lu un pdf qui donnais des conseil pour que le mail ne passe pas en spam.

Page 9...

_________________________________
Min iPomme
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
2 juil. 2010 à 16:05
Bonjour,

Le mail fonctionne, il ne passe plus dans les spams, mais si je le met en html il passe automatiquement en spam, avez vous des conseils pour moi svp ?

cordialement,

Djé33
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
3 juil. 2010 à 04:38
Salut,

$entetemail = "From: $from_email \n"; // Adresse expéditeur


[quote=Essaie ça]$entetemail = "From: Programmeuratelier.com<".$from_email.">."\r\n"; // Adresse expéditeur/quote



______________________________________________________________________
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
3 juil. 2010 à 04:41
Ah oui...et il faut définir le type MIME dans l'entete :
'MIME-Version: 1.0' . "\r\n";



______________________________________________________________________
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
3 juil. 2010 à 15:45
Bonjour phpAnonyme,

mon code est :

<?php
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "Cc: \n";
$entetemail .= "Bcc: \n"; // Copies cachées
$entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
?>


et tu me conseil ceci :

<?php
$entetemail = "From: site.com <".$from_email."> \r\n"; // Adresse expéditeur
$entetemail .= "Cc: \r\n";
$entetemail .= "Bcc: \r\n"; // Copies cachées
$entetemail .= "Reply-To: site.com <".$from_email."> \r\n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\r\n" ;
$entetemail .= "MIME-version: 1.0. \r\n";
$entetemail .= "Content-type: text/html; charset= iso-8859-1 \r\n";
?>


c'est bien ça ?
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
3 juil. 2010 à 15:47
je veux dire ceci :
<?php
$entetemail = "From: site.com <".$from_email.">. "\r\n"; // Adresse expéditeur
$entetemail .= "Cc: \r\n";
$entetemail .= "Bcc: \r\n"; // Copies cachées
$entetemail .= "Reply-To: site.com <".$from_email.">. "\r\n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\r\n" ;
$entetemail .= "MIME-version: 1.0. \r\n";
$entetemail .= "Content-type: text/html; charset= iso-8859-1". "\r\n";
?>

0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
3 juil. 2010 à 15:53
C'est cela je propose !

Plusieurs erreurs de concaténation relevés dont une de ma part :
$entetemail = "From: site.com <".$from_email.">". "\r\n"; // Adresse expéditeur


$entetemail .= "Reply-To: site.com <".$from_email.">". "\r\n"; // Adresse de retour

______________________________________________________________________
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
3 juil. 2010 à 20:36
re phpAnonyme,

J'ai corrigé toutes les erreurs et le mail passe en spam automatiquement, il passe en texte brut mais pas en html, je ne comprend vraiment pas pourquoi !
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
5 juil. 2010 à 18:45
Salut à tous,

Je crois avoir trouvé la solution pour que le mail en html arrive bien sur hotmail et pas dans les spams.

Je vérifie mes dire et si c'est ok je vous donnerais le code

A+

Cordialement
Djé.
0
cs_Dje33 Messages postés 25 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 19 octobre 2010
5 juil. 2010 à 21:38
Voici mon codage est cela fonctionne même avec hotmail pas de spams !

<?php
$email = 'info@site.com';
$mail = 'mail@hotmail.fr';

$headers .='From: '.$email.''."\n"; // Adresse expediteur
$headers .='Reply-To: '.$mail.''."\n"; // Adresse Destinataire
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

$message ='<html><head><title>Le titre du message ou objet</title></head>
<hr align="JUSTIFY" />

TEXTE

texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte.

texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte, texte.

  <hr />
</html>'; // un certain nombres de caractères dans le message paraît important ! séparation avec balise 
 à voir !

if (mail($mail, 'Test de mail', $message, $headers)) {
$resultat = 'mail envoyé.';
}
else {
$resultat = 'mail pas envoyé';
}

echo $resultat;
?>
0
Rejoignez-nous