Problème pour l'envoi d'un mail
Posté : 06 oct. 2007, 09:56
Bonjour à toute la communauté,
J'ai crée un système de newsletter.
Dans le principe, l'administrateur doit en premier lieu créer le contenu du message. Ceci se fait grâce à une interface équipée d'un éditeur Bbcode dans lequel l'admin va saisir son texte, inserer d'éventuelles images, etc...tout ceci étant ensuite stocké dans une des tables de la bd. Cette partie là fonctionne bien, je ne vous en parle que pour decrire un peu le contexte.
Viens ensuite l'envoi de la newsletter.
Avant d'envoyer le message à des milliers de destinataires, l'admin a la possibilité de faire un envoi personnel, c'est à dire (grâce à un formulaire) d'envoyer sa newsletter à une seule adresse, afin de voir si tout marche bien. C'est là où commence mon problème. Le destinataire reçoit un mail vide (le contenu crée au préalable n'apparaît pas dans le corps du message, sauf si le client est chez wanadoo par exemple...). Le même disfonctionnement se produit lorsque l'on tente un envoi en masse : une très petite quantité de destinataires reçoit le mail avec son contenu. La grande majorité des autres destinataires reçoit un mail vide.
Ci après, le code employé pour l'envoi personnel (ce sont les mêmes fonctions que pour l'envoi en masse).
Qu'en pensez vous???
Merci d'avance
J'ai crée un système de newsletter.
Dans le principe, l'administrateur doit en premier lieu créer le contenu du message. Ceci se fait grâce à une interface équipée d'un éditeur Bbcode dans lequel l'admin va saisir son texte, inserer d'éventuelles images, etc...tout ceci étant ensuite stocké dans une des tables de la bd. Cette partie là fonctionne bien, je ne vous en parle que pour decrire un peu le contexte.
Viens ensuite l'envoi de la newsletter.
Avant d'envoyer le message à des milliers de destinataires, l'admin a la possibilité de faire un envoi personnel, c'est à dire (grâce à un formulaire) d'envoyer sa newsletter à une seule adresse, afin de voir si tout marche bien. C'est là où commence mon problème. Le destinataire reçoit un mail vide (le contenu crée au préalable n'apparaît pas dans le corps du message, sauf si le client est chez wanadoo par exemple...). Le même disfonctionnement se produit lorsque l'on tente un envoi en masse : une très petite quantité de destinataires reçoit le mail avec son contenu. La grande majorité des autres destinataires reçoit un mail vide.
Ci après, le code employé pour l'envoi personnel (ce sont les mêmes fonctions que pour l'envoi en masse).
Qu'en pensez vous???
Merci d'avance
<?php
/*|--------------------------------------------------------------|*/
/*|-----------Envoi personnel pour tester la newsletter----------|*/
/*|--------------------------------------------------------------|*/
//récupération des données
$objetmessage = $_POST['sujet'];
$nomcontenu = $_POST['listcontenu'];
//récupération du contenu du mail
$requete = "SELECT contenu FROM XXXXXXX WHERE nom = '".addslashes($nomcontenu)."'";
$result = mysql_query($requete);
$resultat = mysql_fetch_array($result);
$contenu = stripslashes($resultat['contenu']);
$adressperso = $_POST['emadress'];
//création et envoi du mail
$envoyer_les_mail = envoyer_les_mail($objetmessage,$contenu,$adressperso);
?>
<?php
/*MassMailing - création du mail*/
function envoyer_les_mail($objetmessage,$contenu,$adressperso)
{
//on crée le mail
// on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière
$boundary = "-----=" . md5( uniqid ( rand() ) );
$headers = "From: \"Francis\"<[email protected]>\n";
// on indique qu'on a affaire à un email au format html et texte et
// on spécifie la frontière (boundary) qui servira à séparer les deux parties
// ainsi que la version mime
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";
$message_txt = $contenu."\n\n";
$message_txt .= "This is an automatic mail, please do not answer to this email.\n\n";
$message_txt .= "To unsubscribe, copy and paste the following adresse in your browser:\n";
$message_txt .= "http://www.cetteadresseestfactice.com\n";
$message_html = "<html><body>".$contenu."\n\n";
$message_html .= "<br><br><br><font face='Arial' size='2'>This is an automatic mail, please do not answer to this email.\n\n";
$message_html .= "<br><br><font face='Arial'>To unsubscribe, click on following link:\n";
$message_html .= "<a href='http://www.cetteadresseestfactice.com'>";
$message_html .= "http://www.cetteadresseestfactice.com</a>";
$message_html .= "</font></body></html>";
$message = "This is a multi-part message in MIME format.\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
//$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_txt;
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
//$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_html;
$message .= "\n\n";
$message .= "--" . $boundary . "--\n";
//on envoi le mail
$envoi_message = envoimail($adressperso,$objetmessage,$message,$headers);
}
?>
<?php
/*MassMailing - envoi d'un mail*/
function envoimail($adressperso,$sujet,$message,$headers)
{
mail($adressperso,$sujet,$message,$headers);
}
?>