mitchbuck
Messages postés19Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention20 février 2006
-
5 nov. 2005 à 13:30
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 2007
-
5 nov. 2005 à 17:55
Bonjour à tous !
Bon alors, je sais que j'ai fait marré la galerie avec mon premier pbl de "mail bombing", je vais encore en faire rire d'autres avec mon second pbl : je vais détailler pour que tout le monde comprenne.
Je propose aux internautes de s'inscrire à une newsletter : à ce moment là, je leur demande pour quel type de motos ils souhaitent être informés sur l'arrivée de nouvelles annonces. Je met les adresses mail dans une table "newsletter" ainsi que l'id du type de motos qui les intéressent.
Toutes les semaines (je ne sais pas encore quel jour je ferais ça), je vais envoyer un mail au format html à ceux qui sont inscrits. Je souhaiterais qu'ils reçoivent un mail personnalisé, style lorsqu'on s'inscrit sur un site d'emploi et qu'on reçoit les offres d'emploi correspondant à notre secteur d'activité. Là ils doivent recevoir les annonces de motos uniquement pour le type de motos pour lesquelles ils se sont inscrits.
Bon, jusque là je pense que vous avez compris.
Pour cela, j'utilise (je ne sais pas si c'est la meilleure solution) la fonction mail(). Voilà un bout de code (mais c'est pas propre, no comment !!!)
//--- Là je récupère les emails, nom, prénoms et id des types de motos ---
$query_liste_news "SELECT newsletter.idnewsletter, newsletter.email, newsletter.nom, newsletter.prenom, newsletter.idmoto, moto.nommoto FROM newsletter, motoWHERE moto.idmoto newsletter.idmoto";
$liste_news = mysql_query($query_liste_news, $motoConnexion) or die(mysql_error());
$row_liste_news = mysql_fetch_assoc($liste_news);
$totalRows_liste_news = mysql_num_rows($liste_news);
//---- là je sais que c'est pas le bon endroit pour incrémenter mes adresses mail mais j'ai essayé ailleurs et on a vu le résultat...lol----------------
//------ là je récupère la date du jour --------------
$date = date("d/m/y");
?>
//------- là je commence ma boucle : tant que jai des adresses mails dans ma table « newsletter », jenvoie des mails ------------
<?php do { ?>
<?
//---------- je récupère le nom, le prénom du destinataire du mail ----------------
$prenom = $row_liste_news['prenom'];
$nom = $row_liste_news['nom'];
//----------- je fais un test sur lid moto --------------
// -------- si lid moto est égal à 0 alors jaffecte le texte « Toutes catégories » à la variable $categorie et je fais un select pour récupérer les annonces de toutes catégories -----------
if ($row_liste_news['idmoto']==0)
{
$categorie ="TOUTES CATEGORIES";
$query_listeannonces = sprintf("SELECT annonce.titrean, annonce.idan, annonce.prixan, legal.envoinews FROM annonce, legal WHERE annonce.datean > legal.envoinews");
}
// ---------- sinon je fais un select des annonces dont lid moto est égal à celui de la table newsletter (choix du destinataire) ------------
//------------- là jindique les paramètres du mail----------------
// liste des destinataires du message
$adresse=$email;
// titre du message : zone sujet
$sujet="Les offres Motos ";
// contenu du message
$corps="
<HTML>
.
</HTML>
";
// Création de l'entête du message
// cette entete contient l'email de l'expéditeur ainsi que l'email pour la réponse.
$entete="Content-type:text/html\nFrom:contact@mondomaine.com\r\nReply-To:
[mailto:contact@mondomaine.com contact@mondomaine.com]";
// envoi du mail
mail ($adresse,$sujet,$corps,$entete);
?>
//-------- Ma boucle tant que ------------
<?php } while ($row_liste_news = mysql_fetch_assoc($liste_news)); ?><?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
MON PBL : là où je coince, c'est non seulement pour incrémenter les adresses mails, pour que ça envoie à chaque adresse email de ma table newsletter, mais j'aimerais (utopique ?) qu'ils aient chacun un mail personnalisé : je n'arrive pas à mettre une boucle dans le corps du mail (eh oui ! si y'a plusieurs annonces !!!). Bref, je suis dans la panade !!!
Toute aide ne sera en aucun cas superflue !!Merci !!!
mitchbuck
Messages postés19Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention20 février 2006 5 nov. 2005 à 17:23
Ca m'a l'air pas mal ton code mais dans le corps du mail, je ne peux pas mettre de code php hormis des variables si ?
Je veux dire par là que le corps du mail commence comme ça :
$corps ="
<html>...<html>";
Mais entre les guillemets, je ne mets pas de guillemets nulle part (ni pour les images, exemple : src=http://www.mondomaine.com/images/image.gif ,...). J'arrive juste à mettre des variables php. Mais si je veux mettre une itération FOR ou WHILE bah il va me l'interpréter comme du texte...c'est un peu ça aussi mon pbl...
Est-ce que je me trompe ? Parce que pour ton script, tu mets une boucle (celle pour la liste des annonces) entre les guillements de la variable $corps, non ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 5 nov. 2005 à 17:31
Pas du tout, tu peux faire une boucle dans un contenu de mail. Mais tu n'as pas compris comment ca marchait.
Quand tu envoies le mail, tu envois une version HTML de ton mail. Tu peux y inclure un script PHP si tu veux mais qui sera interprété coté serveur AVANT l'envoi du mail !
Un peu comme quand tu utilises ton navigateur. Tu vois la partie HTML (le résultat), mais tu ne vois pas le traitement en PHP derrière.
Pour un mail c'est pareil ! Si tu veux faire un contenu genre dynamique dans un mail, suffit de faire comme d'hab :
mitchbuck
Messages postés19Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention20 février 2006 5 nov. 2005 à 17:37
ok je comprend. Derniere petite question dû à mon manque de connaissance : si je veux afficher un tableau, c'est la fonction mysql_fetch_array(), c ça nan ?
J'arrive pas trop à gérer cette fonction, si tu pouvais me dire 2 ou 3 mots dessus, merci beaucoup pour ton aide !!!