Mail en php avec pear qui arrive en spam

Signaler
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010
-
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010
-
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

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
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.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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é.
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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é.
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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
); 
?>
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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
); 
?>
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Hello,

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

Page 9...

_________________________________
Min iPomme
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
45
Salut,

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


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



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



______________________________________________________________________
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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 ?
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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";
?>

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
45
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

______________________________________________________________________
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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 !
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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é.
Messages postés
25
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
19 octobre 2010

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;
?>