Pourquoi ma newsletter n'envoie qu'en html?

Eléphanteau du PHP | 22 Messages

22 août 2006, 16:10

Hello
J'ai fait une newsletter basée sur une base de données dont un champs de ma table newsletter est format (html ou texte).
Mais je ne sais pour quelle raison, la newsletter n'envoie qu'en html alors que je fais un test sur le $this->format ... je m'en sors plus ..
Help?
function envoimail($contenu){

  $req="select * from newsletter where idEmail='{$this->idEmail}'";
    $connexion=connexionBD("mgotowy_bd");
    $res=mysql_query($req,$connexion) or die (mysql_error());
    $ligne=mysql_fetch_object($res);

    $this->idEmail=$ligne->idEmail;
    $this->format=$ligne->format;


   if($this->format=="html"){
  $msg = '';
  if(($_POST['contenu'])) {
  
      $requete= "SELECT email FROM newsletter where statut='inscrit' and format='html'";
      $connexion = connexionBD("mgotowy_bd");
      $result = mysql_query($requete, $connexion) or die(mysql_error());
      $bcc = '';

      while($data = mysql_fetch_array($result)) $bcc .= $data['email'].',';
      var_dump($bcc);


       $bcc = substr($bcc,0,strlen($bcc)-1); //on supprime la dernière virgule.
       $from_email  = "[email protected]";// adresse du cinéma
       $to = $this->email;
       
       $entetemail  = "From: $from_email \n"; // Adresse expéditeur
       $entetemail .= "Cc: \n";
       $entetemail .= "Bcc: {$bcc}\n"; // Copies cachées
       $entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
       $entetemail .= "MIME-Version: 1.0 \n";


       $entetemail .="Content-Type: text/html; charset=iso-8859-1 \n";
       $entetemail .= "Content-Transfer-Encoding: 8bit \n";
       
       $corps=$_POST['message'];


       if (($_POST['contenu']) && $_POST['contenu'] =='ouiContenu') {
       $corps.=$contenu;  }
        if (($_POST['contenu']) && $_POST['contenu'] =='nonContenu') {
          $corps.="";}

       //var_dump($cocheContenu);

       mail($to,$_POST['subject'],$corps, $entetemail);
       $msg = 'newsletter envoyée';
 } }
 
 
 

 if($this->format=="texte"){
  $msg = '';
  if(($_POST['contenu'])) {

      $requete= "SELECT email FROM newsletter where statut='inscrit' and format='texte'";
      $connexion = connexionBD("mgotowy_bd");
      $result = mysql_query($requete, $connexion) or die(mysql_error());
      $bcc = '';

      while($data = mysql_fetch_array($result)) $bcc .= $data['email'].',';
      var_dump($bcc);


       $bcc = substr($bcc,0,strlen($bcc)-1); //on supprime la dernière virgule.
       $from_email  = "[email protected]";// adresse du cinéma
       $to = $this->email;

       $entetemail  = "From: $from_email \n"; // Adresse expéditeur
       $entetemail .= "Cc: \n";
       $entetemail .= "Bcc: {$bcc}\n"; // Copies cachées
       $entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
       $entetemail .= "MIME-Version: 1.0 \n";


       $entetemail .="Content-Type: text/plain; charset=iso-8859-1 \n";
       $entetemail .= "Content-Transfer-Encoding: 8bit \n";

       $corps=$_POST['message'];


       if (($_POST['contenu']) && $_POST['contenu'] =='ouiContenu') {
       $corps.=$contenu;  }
        if (($_POST['contenu']) && $_POST['contenu'] =='nonContenu') {
          $corps.="";}

       //var_dump($cocheContenu);

       mail($to,$_POST['subject'],$corps, $entetemail);
       $msg = 'newsletter envoyée';
 } }
 
}
C'est assez long, je sais ...
Mais si qqln a une idée, ce serait sympathique =)[/code]
petit webmestre deviendra grand

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 août 2006, 16:20

Question bête mais... quelle est la valeur de $ligne->format ?
et est-ce que tu rentres dans le if($this->format=="texte") ?

Eléphanteau du PHP | 22 Messages

22 août 2006, 16:27

Bah c justement ça le probleme en fait, le $this->format prend comme valeur que "html" (la valeur du format pour le premier mail enregistré), donc du coup, il n'entre que dans le if qui verifie si le format est bien "html".
*prise de tete*
aaaahhhhhhhhh, je veux une reponse, pliz ^^
petit webmestre deviendra grand

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 août 2006, 16:37

la valeur du format pour le premier mail enregistré
C'est normal, tu n'interroges que la première ligne de résultat retourné par ta requête :
$ligne=mysql_fetch_object($res);
Donc si le premier est un mail html, le mail que tu vas envoyer sera forcément au format html... Il ne te manquerait pas une boucle pour traiter les suivants ? :)
while ($ligne=mysql_fetch_object($res)) { 
  if(...) { //mail html 
    ...
  }
  else { //mail txt
    ....
  }
}
Ou peut être est-ce dans ta requête que tu as un soucis et qu'il retourne tout le temps le même mail ?
fais un echo de $req au début de ton code pour voir la tête du sql généré et vérifier qu'il correspond bien à ce que tu attends :)

Eléphanteau du PHP | 22 Messages

22 août 2006, 16:50

ouiiiii, c'etait ça mais bien sur.
J'avais trouvé avant de regarder ta réponse ... sisi j't'assure =)
Merci pour l'aide en tous cas, ça fait plaisir ^^
petit webmestre deviendra grand