begin process at 2010 02 10 15:11:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > ENVOI DE NEWSLETTER SIMPLE ET PROFESSIONNEL (APPROUVÉ)

ENVOI DE NEWSLETTER SIMPLE ET PROFESSIONNEL (APPROUVÉ)


 Information sur la source

Note :
9,17 / 10 - par 12 personnes
9,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Niveau :Débutant Date de création :01/05/2004 Date de mise à jour :05/05/2004 13:25:02 Vu :22 584

Auteur : romalafrite

Ecrire un message privé
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Permet la création, l'aperçu, la modification et l'envoi de newsletter au format HTML. Statistiques sur la fonction mail après l'envoi (inutile ;) mais bon...)

Note : Une newsletter, pour économiser les ressources serveur, doit de préférence être envoyée la nuit pendant les creux d'utilisation serveur.

Source

  • <?php
  • $courriels="";
  • $newsletter=isset($_POST['newsletter'])?$_POST['newsletter']:"";
  • $sujet=isset($_POST['sujet'])?$_POST['sujet']:"Newsletter";
  • $send=isset($_POST['send'])?$_POST['send']:"";
  • connexion();
  • $query="SELECT * FROM `newsletter`";
  • $result=mysql_query($query);
  • for($i=0;$i<mysql_num_rows($result);$i++){
  • $id=mysql_result($result,$i,"id");
  • $courriel=mysql_result($result,$i,"courriel");
  • $date=mysql_result($result,$i,"date");
  • $courriels.=$courriel.";";
  • }
  • if($send=="apercu"){
  • ?>
  • <p>Aperçu de la newsletter :</p>
  • <div style="display: block; width: 100%; background-color: white; color: black; border: 1px red dashed; ">
  • <?php echo stripslashes($newsletter); ?>
  • </div>
  • <form method="post" action="newsletter.php" name="formapercu">
  • <p>Aperçu du code généré pour la newsletter (non modifiable ici, cocher la case "modifier" plus bas...) :</p>
  • <textarea readonly="readonly" name="newsletter" style="width: 100%; height: 200px;"><?php echo stripslashes($newsletter); ?></textarea>
  • <p>Vérifiez le titre pour la newsletter avant l'envoi</p>
  • <input type="text" name="sujet" value="<?php echo $sujet; ?>" style="width: 100%;" />
  • <p>Actions possibles :</p>
  • <div style="position: relative; float: left;"><input type="radio" name="send" value="modif" onClick="document.formapercu.valuesubmit.value='Modifier la newsletter';"/>Modifier<br />
  • <input type="radio" name="send" value="send" onClick="document.formapercu.valuesubmit.value='Envoyer la newsletter';" checked="checked"/>Envoyer</div>
  • <div style="position: relative; top: 6pt; float: right;"><input type="submit" name="valuesubmit" value="Envoyer la newsletter"/></div></form>
  • <?php
  • }
  • elseif($send=="send"){
  • ?><script language="JavaScript" type="text/Javascript">alert('Attention, la newsletter est en cours d\'envoi. Ceci peut prendre un certain temps suivant le nombre de personnes inscrites.');</script>
  • <p>Envoi en cours... Veuillez patienter</p>
  • <?php
  • connexion();
  • $query="SELECT * FROM `newsletter`";
  • $result=mysql_query($query);
  • $succes_nb=0;
  • $succes="";
  • $nope_nb=0;
  • $nope="";
  • /* destinataire = $courriel */
  • /* sujet = $sujet */
  • /* message = $newsletter */
  • /* Pour envoyer du mail au format HTML */
  • $headers = "MIME-Version: 1.0\n";
  • $headers .= "Content-type: text/html\n charset=iso-8859-1\n";
  • /* D'autres en-têtes : errors, From cc's, bcc's, etc */
  • $headers .= "From: Votre nom <reply@domaine.com>\n";
  • //$headers .= "Cc: societe@domaine.com\n";
  • //$headers .= "Bcc: societe@domaine.com\n";
  • for($i=0;$i<mysql_num_rows($result);$i++){
  • $id=mysql_result($result,$i,"id");
  • $courriel=mysql_result($result,$i,"courriel");
  • $date=mysql_result($result,$i,"date");
  • /* et hop, à la poste */
  • if(@mail($courriel, $sujet, $newsletter, $headers)){
  • $succes .= $courriel."<br />";
  • $succes_nb++;
  • }
  • else{
  • $nope .= $courriel."<br />";
  • $nope_nb++;
  • }
  • }
  • $succes_pourc= ($succes_nb / $i ) * 100;
  • $echec_pourc= ($nope_nb / $i ) * 100;
  • echo "<p>Fin du processus, statistiques sur cet envoi</p>";
  • echo "Succès pour $succes_nb mails ( sur $i soit $succes_pourc% ) :<br />$succes";
  • echo "<br /><br />Echecs pour $nope_nb mails ( sur $i soit $echec_pourc% ) :<br />$nope";
  • }
  • elseif($send=="modif"){
  • ?>
  • <p>Préparer une newsletter :</p>
  • <div class="formulaire">
  • <form action="newsletter.php" method="post">
  • <p>Titre de la newsletter</p>
  • <input type="text" name="sujet" value="<?php echo $sujet; ?>" style="width: 100%;" />
  • <p>Contenu de la newsletter</p>
  • <textarea name="newsletter" style="width: 100%; height: 200px;"><?php echo stripslashes($newsletter); ?></textarea><br />
  • <input type="hidden" name="send" value="apercu" />
  • <p>Terminer</p>
  • <input type="submit" value="Envoyer cette newsletter" />
  • </form>
  • </div>
  • <?php
  • }
  • else{ ?>
  • <p>Préparer une newsletter :</p>
  • <div class="formulaire">
  • <form action="newsletter.php" method="post">
  • <p>Titre de la newsletter</p>
  • <input type="text" name="sujet" value="Newsletter" style="width: 100%;" />
  • <p>Contenu de la newsletter</p>
  • <textarea name="newsletter" style="width: 100%; height: 200px;"></textarea><br />
  • <input type="hidden" name="send" value="apercu" />
  • <p>Terminer</p>
  • <input type="submit" value="Envoyer cette newsletter" />
  • </form>
  • </div>
  • <?php }
<?php
$courriels="";


	$newsletter=isset($_POST['newsletter'])?$_POST['newsletter']:"";
	$sujet=isset($_POST['sujet'])?$_POST['sujet']:"Newsletter";
	$send=isset($_POST['send'])?$_POST['send']:"";
	connexion();
	$query="SELECT * FROM `newsletter`";
	$result=mysql_query($query);
	for($i=0;$i<mysql_num_rows($result);$i++){
		$id=mysql_result($result,$i,"id");	
		$courriel=mysql_result($result,$i,"courriel");
		$date=mysql_result($result,$i,"date");
		
		$courriels.=$courriel.";";
	
	}
	
	if($send=="apercu"){
		?>
		<p>Aperçu de la newsletter :</p>
		<div style="display: block; width: 100%; background-color: white; color: black; border: 1px red dashed; ">
		<?php echo stripslashes($newsletter); ?>
		</div>
		<form method="post" action="newsletter.php" name="formapercu">
		<p>Aperçu du code généré pour la newsletter (non modifiable ici, cocher la case "modifier" plus bas...) :</p>
		<textarea readonly="readonly" name="newsletter" style="width: 100%; height: 200px;"><?php echo stripslashes($newsletter); ?></textarea>
		<p>Vérifiez le titre pour la newsletter avant l'envoi</p>
		<input type="text" name="sujet" value="<?php echo $sujet; ?>" style="width: 100%;" />
		<p>Actions possibles :</p>
		<div style="position: relative; float: left;"><input type="radio" name="send" value="modif" onClick="document.formapercu.valuesubmit.value='Modifier la newsletter';"/>Modifier<br />
		<input type="radio" name="send" value="send"   onClick="document.formapercu.valuesubmit.value='Envoyer la newsletter';" checked="checked"/>Envoyer</div>
		<div style="position: relative; top: 6pt; float: right;"><input type="submit" name="valuesubmit" value="Envoyer la newsletter"/></div></form>
		<?php
	}
	
	
	elseif($send=="send"){
		?><script language="JavaScript" type="text/Javascript">alert('Attention, la newsletter est en cours d\'envoi. Ceci peut prendre un certain temps suivant le nombre de personnes inscrites.');</script>
		<p>Envoi en cours... Veuillez patienter</p>
		<?php
		
		connexion();
		$query="SELECT * FROM `newsletter`";
		$result=mysql_query($query);
		$succes_nb=0;
		$succes="";
		$nope_nb=0;
		$nope="";
			
			/* destinataire = $courriel */
			/* sujet = $sujet */
			/* message = $newsletter */
			/* Pour envoyer du mail au format HTML */
			$headers  = "MIME-Version: 1.0\n";
			$headers .= "Content-type: text/html\n charset=iso-8859-1\n";
			
			/* D'autres en-têtes : errors, From cc's, bcc's, etc */
			$headers .= "From: Votre nom <reply@domaine.com>\n";
			//$headers .= "Cc: societe@domaine.com\n";
			//$headers .= "Bcc: societe@domaine.com\n";
		
		for($i=0;$i<mysql_num_rows($result);$i++){
			$id=mysql_result($result,$i,"id");	
			$courriel=mysql_result($result,$i,"courriel");
			$date=mysql_result($result,$i,"date");
			
			/* et hop, à la poste */
			if(@mail($courriel, $sujet, $newsletter, $headers)){
			$succes .= $courriel."<br />";
			$succes_nb++;	
			}
			else{
			$nope .= $courriel."<br />";
			$nope_nb++;
			}

			
		}
		$succes_pourc= ($succes_nb / $i ) * 100;
		$echec_pourc= ($nope_nb / $i ) * 100;
		echo "<p>Fin du processus, statistiques sur cet envoi</p>";
		echo "Succès pour $succes_nb mails ( sur $i soit $succes_pourc% ) :<br />$succes";
		echo "<br /><br />Echecs pour $nope_nb mails ( sur $i soit $echec_pourc% ) :<br />$nope";
	}
	
	
	elseif($send=="modif"){
		?>
		<p>Préparer une newsletter :</p>
		<div class="formulaire">
		<form action="newsletter.php" method="post">
		<p>Titre de la newsletter</p>
		<input type="text" name="sujet" value="<?php echo $sujet; ?>" style="width: 100%;" />
		<p>Contenu de la newsletter</p>
		<textarea name="newsletter" style="width: 100%; height: 200px;"><?php echo stripslashes($newsletter); ?></textarea><br />
		<input type="hidden" name="send" value="apercu" />
		<p>Terminer</p>
		<input type="submit" value="Envoyer cette newsletter" />
		</form>
		</div>	
		<?php
	}
	
	
	else{	?>
		<p>Préparer une newsletter :</p>
		<div class="formulaire">
		<form action="newsletter.php" method="post">
		<p>Titre de la newsletter</p>
		<input type="text" name="sujet" value="Newsletter" style="width: 100%;" />
		<p>Contenu de la newsletter</p>
		<textarea name="newsletter" style="width: 100%; height: 200px;"></textarea><br />
		<input type="hidden" name="send" value="apercu" />
		<p>Terminer</p>
		<input type="submit" value="Envoyer cette newsletter" />
		</form>
		</div>
		<?php }
	


 Conclusion

Créer une table `newsletter` avec les entrées id (int 10) courriel (varchar 255) et date (varchar 10)

Vous pouvez développer à côté le module d'inscription à la newsletter (relativement simple ;) )

remplacez connexion(); par vos paramètre de connexion, c'est à dire
mysql_connect($server,$user,$mdp);
mysql_sele ct_db($db);

Tout est prêt ;)

la combinaison avec le script HTMLarea, téléchargeable ici, rend plutôt pas mal :
http://www.interactivetools.com/products/htmlare a/


 Sources du même auteur

Source avec une capture BASE DE GALERIE PHOTO EN 20 LIGNES FACILEMENT PERSONNALISABL...
Source avec Zip UN SYSTÈME SIMPLE (ÉPURÉ) D'AUTHENTIFICATION (SESSIONS)

 Sources de la même categorie

Source avec Zip SCREENMAIL-SOLUTION DE CONTACT POUR WEBMASTERS par bnrj
Source avec Zip FORMULAIRE EMAIL AVEC PIECE JOINTE REPRIS DE LITTLEBUBU par cfndiaye
Source avec Zip Source avec une capture MESSAGERIE INTERNE AVEC FICHIER TEXTE par polly19
Source avec Zip FORMULAIRE EVOIE ET PLUS par florentinul
FILTRE POUR NEWSLETTERS GMAIL par durealex

Commentaires et avis

Commentaire de lumesh le 01/05/2004 20:27:05

Par pitié utilise le stripslashes()  pour virer les \' et compagnie !!!
le addslashes() si tu veux en remettre d'autre mais bon ....

Commentaire de romalafrite le 02/05/2004 20:38:02

?? j'avais la modif avant d'avoir ce commentaire...
Toutes mes excuses ;)

Commentaire de romalafrite le 02/05/2004 20:38:25

Sinon, tu en penses quoi si tu l'as testé ?

Commentaire de defkrie le 03/05/2004 12:40:13

pas mal. non testé mais l'apercu est pas mal...
peut ton rajouetr les fichiers  joints

Commentaire de romalafrite le 03/05/2004 13:04:28

MMh, oui, c'est vrai, ça peut être intéressant. Et peut être fournir la feuille de style aussi, je ferai ça dès que j'ai un peu de temps ;)
Mais il faut le tester ;)

Commentaire de minta le 04/05/2004 05:00:15

Bonjour,
Je trouve ton application intéressante et je pense que d'autres la trouveront plus intéressante d'autant que j'ai pris la peine de faire un amalgame de ton code avec le script HTMLarea. Cela donne un beau mariage de codes.

Commentaire de romalafrite le 04/05/2004 07:46:45

N'est-ce pas ;)

Commentaire de minta le 04/05/2004 19:30:11

Romalafrite la note de 10/10 est de moi :), ton script me donne plein d'idées, encore bravo!

Vous trouverez ma modification à l'adresse suivante:

&lt;http://www.phpcs.com/code.aspx?ID=22503&gt;

Commentaire de elyps le 23/09/2004 22:14:44

Source testée, reste encore qq améliorations à apporter (attention aux \ et aux / dans les url)

Problème majeur : Le fond des mails est bleu pâle et l'écriture reste en noir..
Alors que ma newsletter est personnalisée entièrement avec du CSS  :(  (dans la preview, c'est mon CSS qui est visible mais il ne prend pas effet à l'arrivée)
Mes membres vont me charier avec une newsletter pareille !!
(Je m'en suis aperçu après l'avoir envoyée)

Dernier point, les possesseurs d'adresses MSN ne lieront probablement jamais la newsletter vue qu'elle arrive sous forme de fichier attaché au mail.  :(


Points positifs : assez rapide (mais ça dépendra des serveurs, évitez les heures de pointes), simple (areuh areuh) et efficace ! (malgré que je tappe ma newsletter sur Dreamweaver et non avec des balises BBcodes).

Merci à toi romalafrite !

Commentaire de elyps le 23/09/2004 22:20:13

Pour le CSS, j'ai remplacé la ligne 23 :

<div style="display: block; width: 100%; background-color: white; color: black; border: 1px red dashed; ">

Par : <div>

Et le fond bleu pâle persiste, avec la police noire ! :(
Donc je pige pas mais j'ai un peu du mal parfois..

J'attends la mise à jour avec impatience :D

Commentaire de stepibou le 28/01/2005 19:48:18

merci pour ta source,

j'ai utilisé ta source, (si ca ne te dérange pas),
modifier pour une personnalisation de l'email,
et l'inserer dans ma source de newsletter :

http://www.phpcs.com/code.aspx?id=28192

si t'as une suggestion.

a+

Commentaire de idealyo le 29/05/2007 09:19:10

je ne comprends pas pourquoi au départ de ton script tu concatenes les emails dans couriels, pour ensuite au moment de les envoyer ne pas te servir de ta variable couriels et envoyer les mails 1 à 1...

A quoi sert donc ton premier tour de boucle ?

++

Commentaire de jeanlo73 le 31/05/2007 18:34:27

bonjour

Peut-on vérifier si quelqu'un à lue la newslettre.

Merci

Commentaire de minta le 31/05/2007 19:33:45

Bonjour
La remarque de IDEALYO est très pertinente, la première boucle ne sert absolument à rien. Je pense que cela est sans doute dû à la distraction du programmeur. Elle ralentie l'application, elle peut donc à mon sens être supprimée.

Commentaire de mdafr le 05/07/2007 16:28:13

Bonjour,
J'essaye d'utiliser cette newsletter, elle marche bien, mais un petit problème se pose, certains mails ne partent pas (la fonction de vérification est utile). Pourtant :
- Les adresses mails sont correctes (c'est vérifié)
- J'ai modifier les valeurs du php.ini (pfpro.defaulttimeout, max_input_time, memory_limit)

Jusqu'à 20 mails ça marche mais après j'ai des mails qui ne sont pas envoyés.
Je ne sais pas comment faire, avez vous eu ce soucis ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales