Comment créer un script d'envoi d'emails personalisés.

WRInaute occasionnel
Bonjour,

J'ai un site proposant d'envoyer à ceux qui s'inscrivent à la newsletter des articles.

lors de l'inscription, la personne doit choisir le ou les themes des articles qu'elle désir recevoir dans sa newsletter.

donc chaque personne reçoit un email personalisé avec les articles et les thèmes qu'elle a choisi.

Malgré toutes mes recherches je n'arrive pas a trouver une technique pour réussir a envoyer à tout le monde un email personalisé en un seul clic.

bref, j'aimerais une fois par semaine cliquer sur "envoyer les newsletter" et que chacun recoive son email avec les articles qu il a sélectionné à l inscription.

Si quelqu'un pouvait m'aider je lui serait tres reconnaisant, car ce problème bloc l ouverture de mon site.

Merci à vous,

dDavid
 
WRInaute discret
je comprends pas trop à quel moment tu as un problème.

Si les membres sont dans une bdd avec le nom des thèmes choisi, tu fais un truc du genre :

SELECT email FROM la_table WHERE theme=xxx; -- à adapter bien sur si les membres sont pas dans la même table que les sujets.
while($row=mysql_fetch_assoc())
{
if(empty(les_themes_a_poster[$row['email']]))
les_themes_a_poster[$row['email']]='ici la partie du corps du message à envoyer en rapport avec le thème';
}
... parreil pour les autres thèmes

à la fin

tu fais un foreach et tu envoie pour tous les clefs de les_themes_a_poster un message incluant la valeur de les_themes_a_poster à l'endroits voulu.

Mais y a encore beaucoup d'autre façon de le faire...


ps: "theme=xxx" ne sugere rien quand au contenu...
 
WRInaute occasionnel
Je pense que la 1ère question c'est effectivement ça: en quoi est developper ton site? en php? en html? en asp? j'imagine en php et si c'est le cas, tu dois bien avoir une bdd où sont stockés tes données?
 
Nouveau WRInaute
Salut, alors je travaille pour orkyd et voila ce que j'ai fait :

Explication du script :

Alors pour les emails il y a 2 tables

1 table journalistes ou dedans sont stocké les emails
1 tables contenir ou dedans il y a stocké les id des email & les id des thèmes thématique

Donc si 1 email est inscrit a plusieurs thème thématique, il a plusieurs entré dans la table contenir.

Donc pour les articles, on les recup en checkand des checkbox.

Donc enfaîte le script construit les email avec les articles sélectionnée, pour chaque article, il doit les places dans les parties correspondantes pour le mail, c'est a dire : les communiquer, les conférence & les actu blogs

Donc au début sa trie chaque articles dans les parties correspondantes, et en fait le problème, c que je n'arrive pas a dire qu'il doit sélectionné les articles correspondant a l'email qui lui correspond a plusieurs thèmes.

Voilà se que j'ai fait :

//DECLARATION
$list=$_POST['list'];
$conf='0';
$com='0';
$actub='0;';
//FIN DECLARATION

$selection = mysql_query("SELECT email FROM journalistes");

while($envoie=mysql_fetch_array($selection))
{
$email = $envoie['email'];
//CREATION DU MAIL
$date = date("d/m/Y");
$headers = "From: \"contact@xxxxxxxxxx.com\"<contact@xxxxxxxxxx.com>\n";
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"";

$sujet = "[Vos communiqués xxxxx du $date ]";

$message = "<html><body>------------------------------------------------------------------------------------------------------------------------------";
$message .= "<font face=\"Arial\" size=\"5\"><strong><br>Article</strong><font color=\"#ff0000\"><strong>Presse</strong></font><font color=\"#000000\" size=\"2\"> $date<br></font>";
$message .= "<font size=\"1\"><strong><font color=\"#0000ff\">Vos communiqu&eacute;s, conf&eacute;rences et articles de Blogs.<br>";
$message .= "</font></strong><a href=\"http://www.xxxxxxxxxx.com\" target=\"_blank\"><strong><font color=\"#000000\">www.xxxxxxxxxx.com</font></strong></a></font></font><br>";
$message .= "------------------------------------------------------------------------------------------------------------------------------";

for ($i = 0; $i < count($list); $i++)
{
$retour = mysql_query("SELECT idA, titre, date, resumer, type, idThe FROM articles, appartenir, journalistes WHERE idA= '$list[$i]' ");
$donnees = mysql_fetch_array($retour);
$type = $donnees['type'];
$titre = $donnees['titre'];
$dateart = date('d/m/Y', $donnees['date']);
$resumer = $donnees['resumer'];
$id = $donnees['idA'];


if ($type == '2')
{
if ($com==0)
{
$message .= "<p></p><font face=Arial size=2><u><font size=3>Communiqués :</font></u><p></p>";
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=2&id=$id\" target=\"_blank\"><b>[Suite du communiqués]</b></a></font><br><br>";
$com=1;
}
else
{
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=2&id=$id\" target=\"_blank\"><b>[Suite du communiqués]</b></a></font><br><br>";
}
}

elseif ($type == '3')
{
if ($conf==0)
{
$message .= "<p></p><font face=Arial size=2><u><font size=3>Conférences :</font></u><p></p>";
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=3&id=$id\" target=\"_blank\"><b>[Suite de la conférence]</b></a></font><br><br>";
$conf=1;
}
else
{
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=3&id=$id\" target=\"_blank\"><b>[Suite de la conférence]</b></a></font><br><br>";
}
}

elseif ($type == '4')
{
if ($actub==0)
{
$message .= "<p></p><font face=Arial size=2><u><font size=3>L'actu en Blog :</font></u><p></p>";
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=4&id=$id\" target=\"_blank\"><b>[Voir la suite]</b></a></font><br><br>";
$actub=1;
}
else
{
$message .= "<font size=2><font face=Arial><strong><font color=\"#0000ff\">[$dateart] $titre :</font><br></strong>";
$message .= "<font face=Arial size=2><font color=\"#000000\">$resumer - <a href=\"http://xxxxxxxxxx.com/voir.php?type=4&id=$id\" target=\"_blank\"><b>[Voir la suite]</b></a></font><br><br>";
}
}

}
$message .= "<font face=Arial size=2>A votre service,</font><br>";
$message .= "<font face=Arial size=2>L'équipe xxxxxxxxxx.<br><br></font>";
$message .= "<font face=Arial size=2><font color=\"#808080\"><em>Service d'information offert par Article Presse :</em></font>";
$message .= "<a href=\"http://www.xxxxxxxxxx.com\"><font color=\"#808080\"><em>www.xxxxxxxxxx.com</em></font></a><font color=\"#808080\"><em> - <u><font color=\"#0000ff\"><a href=mailto:\"contact@xxxxxxxxxx.com\">contact@xxxxxxxxxx.com</a></font></u></em><br>";
$message .= "<font face=Arial color=\"#808080\" size=2><em>Pour vous désabonner de cette liste d'information veuillez cliquer ici.</em></font>";

// envoie email
mail($envoie['email'],$sujet,$message,$headers);
}

en fait avec ce code, sa envoie 1 mail a tout les membres avec tout les thémes séléctionnées.
 
WRInaute occasionnel
quelqu'un a t il une solution ? ci dessus vous avez le code actuel.

en fait celà fonctionne si une personne choisi un seul thème, mais si on peut choisir plusieurs thèmes celà ne fonctionne plus.

Merci pour votre aide svp
 
WRInaute occasionnel
essai un while sur la table "contenir" puisque c'est là où sont stockés les thèmes pour chaque emails.

Si tu while la table journaliste, c'est normal qu'il n'y ai que 1 email envoyé puisque tu n'as pas d'entrés multiples apparemment dans cette table.
 
WRInaute accro
une solution de rechange pour alleger ton serveur :
tu envois le newsletter qui sert juste de lien vers la page du site ou le contenu sera généré en fontcion de theme choisi

ca peut pas le faire ? parceque générer et envoyer X newsletter diffrérentes a X personnes, ca peut tres vite etre lourd, non ?t'as le serveur qui suit ?
 
Nouveau WRInaute
bradeux a dit:
essai un while sur la table "contenir" puisque c'est là où sont stockés les thèmes pour chaque emails.

Si tu while la table journaliste, c'est normal qu'il n'y ai que 1 email envoyé puisque tu n'as pas d'entrés multiples apparemment dans cette table.

Non pas possible, car sa envera 1 email par théme que l'email sera inscrit

Donc certain membre pourrait recevoir xx fois le mail selon xx thémes auquel il sont inscrit ! :wink:
 
Discussions similaires
Haut