Eléphanteau du PHP |
23 Messages
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

.
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...
