Newsletter, problème d'affichage du code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Newsletter, problème d'affichage du code

par jalol » 07 avr. 2006, 10:20

Merci de ta réponse, Ryle

Bien évidemment, ce n'est pas possible de vérifier... Je pense également que cela vient d'une histoire de configuration, mais je me demandais si cela pouvait venir de mon code...

Est-il possible d'envoyer le mail à la fois en HTML et en texte brut? De manière à être compatible avec tout le monde? Si oui comment

par Ryle » 07 avr. 2006, 10:17

Dans la mesure ou cela fonctionne dans 98% des cas, pour les 2% restant tu devrais déjà vérifier (si cela est possible) si ce n'est pas juste leur logiciel de courrier qui ne serait pas tout simplement configuré pour reçevoir les mail en texte brut :)

Dans les Outils ou les Options, tu dois pouvoir paramétrer le format de réception des mails.. Sachant que sur la plupart des newsletter aujourd'hui, tu as toujours un lien du genre "si ce mail ne s'affiche pas correctement, cliquez ici pour accéder au site..." pour palier à ce problème éventuel

par jalol » 07 avr. 2006, 10:12

Salut à tous !
J'ai également ce problème, mais j'utilise bien les bons headers...
La plupart du temps, le mail arrive correctement à destination, à savoir qu'il apparaît correctement en HTML, mais dans certains cas (environ 2% des mails envoyés), il arrive en texte brut :shock: .

J'ai beau retourner le problème dans tous les sens, je ne comprends pas... Les adresses recevant ces mails à problème sont diverses (wanadoo, club-internet...), mais ce n'est pas systématique.

Voici le code que j'utilise pour envoyer le mail :
<?php
require ('../includes/mysql_connect.php');
$retour  = mysql_query ("SELECT * FROM abonnes_newsletter WHERE categorie='" . $_GET['categorie'] . "' AND abonne='oui' ORDER BY mail LIMIT " . ($_GET['start'] * $_GET['limite']) . "," . $_GET['limite']) or die (mysql_error());
mysql_close();

$contenu_mail = file_get_contents ('./txt/newsletter.txt'); // Je vais chercher le texte du mail
$sujet_mail   = file_get_contents ('./txt/newsletter_sujet.txt'); // Idem pour le sujet

while ($donnees = mysql_fetch_array ($retour)) {
  $modele   = file_get_contents ('../newsletter/newsletter.html');
  $message  = str_replace ('##NOM_DEST##', $donnees['prenom'], $modele);
  $message  = str_replace ('##MESSAGE##', utf8_decode ($contenu_mail), $message);
  $message  = stripslashes ($message);
  $message  = str_replace ('##MAIL##', $donnees['mail'], $message);
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  $headers .= 'From: BELLONE <[email protected]>' . "\r\n";
  $to      = ($donnees['nom'] == '') ? $donnees['mail'] : $donnees['prenom'] . ' ' . $donnees['nom'] . ' <' . $donnees['mail'] . '>';
  
  if (!mail ($to, utf8_decode ($sujet_mail), $message, $headers, '[email protected]')) { // Au cas où le mail ne part pas, je consigne les erreurs. Le 5ème paramètre de la fonction mail sert à configurer l'adresse de retour pour les erreurs (genre user unknown)
    $nombre = file_get_contents ('txt/nb_erreurs.txt');
        $nombre++;
        file_put_contents ('txt/nb_erreurs.txt', $nombre);
        
        $log    = file_get_contents ('txt/log_erreurs.txt');
        $log    = $log . $donnees['mail'] . "\n";
        file_put_contents ('txt/log_erreurs.txt', $log);
  }
}

if ( ($_GET['start'] + 1) != $_GET['reload']) { // On gère le rafraîchissement de la page pour l'envoi de mails par paquets
  header ('Location: newsletter_attente.php5?start=' . ($_GET['start']+1) . '&limite=' . $_GET['limite'] . '&total=' . $_GET['total'] . '&reload=' . $_GET['reload'] . '&categorie=' . $_GET['categorie']);
} else {
  $message = 'La newsletter a bien été envoyée !';
  $message = urlencode($message);
  header ('Location: index.php5?message=' . $message);
}
?>
Si vous avez une idée... :)

par Cyrano » 08 déc. 2005, 21:40

Peut-être en ajoutant un type mime pour l'envoi en html:
//...
        /* Pour envoyer un mail au format HTML, on configure le type MIME. */
        $entetes  = "MIME-Version: 1.0\r\n";
        $entetes .= "Content-type: text/html; charset=iso-8859-1\r\n";
//...

par Zurg » 08 déc. 2005, 21:39

Salut !
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
     $headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Plus d'infos...

@ +

Newsletter, problème d'affichage du code

par harry67 » 08 déc. 2005, 21:32

Voici ma newsletter en HTML tel qu'elle est envoyée :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta Content-type: text/html; charset=iso-8859-1\r\n />
<title>~~ Felix Felicis ~~ Le site ultime sur Harry Potter!</title>
<meta name="KEYWORDS" content="<?php include "meta_word.txt"; ?>">
<link href="st.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
	background-color: #CC0000;
}
body,td,th {
	font-family: trebuchet MS;
	color: #FFFFFF;
	font-size: 13px;
	font-weight: bold;
}
a:link {
	color: #FFFFFF;
}
a:visited {
	color: #FFFFFF;
}
.Style6 {font-size: 15px}
-->
</style>

</head>

<body topmargin="0" leftmargin="0" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" onLoad="dynAnimation()">
<table width="100%" border="0">
  <tr>
    <td align="center"><img src="http://hpotter.club.fr/VS_5_site.jpg" width="766" height="131" border="0" /></td>
  </tr>
  <tr>
    <td><span class="Style6">---> La newsletter ---> Edition de Janvier 2006 ---> Felix Felicis : http://hpotter.club.fr</span></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<body>
</body>
</html>
et le code PHP avec la fonction mail() qui l'envoie :
<?php


include ("**************");

$connexion = mysql_connect($host, $user, $mpasse)
or die ("Connexion à la base impossible"); 

$db = mysql_select_db($database)
or die("Sélection de la base impossible");

 $sql = "SELECT mail FROM membres";
$res = mysql_query($sql) or die(mysql_error());
	
	
while($ligne = mysql_fetch_array($res, MYSQL_ASSOC))
{
$email2 = $ligne[mail];

$headers="From: FelixFelicis";
mail($email2,"La newsletter de FelixFelicis",$text,$headers);
}



?>
et lorsque ça arrive sur Thunderbird, ça m'affiche le HTML en mode texte.
Auriez-vous une solution?

par Truc » 08 déc. 2005, 01:04

comment envoie tu les mails ? avec la fonction mail() (il y a un exemple de mail au format HTML) ou autre ?

par jeff » 07 déc. 2005, 22:53

non c'est pas ca on parle du type mime du fichier c'est a dire text/html

Newsletter, problème d'affichage du code

par harry67 » 07 déc. 2005, 22:46

Que voulez-vous dire par les "entêtes nécessaires"?
J'ai bien mis en tout cas les balises HTML, BODY etc... si c'est cela dont vous voulez parler.

par mario » 07 déc. 2005, 21:49

Si le texte n'est pas mis en forme, c'est que le mail part en tête brut.
as tu mis les entêtes nécessaires à l'envoi en html ?

Newsletter, problème d'affichage du code

par harry67 » 07 déc. 2005, 21:31

Bonjour,
J'ai crée un système de newsletter où je remplie un textearea et ça envoie le contenu de ce fameux textarea vers les adresses e-mail des membres inscrits. Le seul problème, c'est que lorsque j'envoie du code HTML avec ce système, le code HTML ne s'éxécute pas sur la messagerie et il est affiché tel quel. Auriez-vous une solution à ce problème,
Merci d'avance