Newsletter pro

Répondre
caporga
le 27/12/2007 à 18:41
caporga
Bonjour la communauté,
je viens de récupérer un code pour générer des newsletters, il ne marchait, alors, je me suis plonger dedans pour voir les problèmes... j'en ai résolu quelques un mais pas la totalité, le code n'envoie pas les mails... si quelqu'un à la solution... merci bon courage

cap

<?php 
$courriels="";
$newsletter=isset($_POST['newsletter'])?$_POST['newsletter']:"";
$sujet=isset($_POST['sujet'])?$_POST['sujet']:"Newsletter";
$send=isset($_POST['send'])?$_POST['send']:"";
$serveur = "####";
$utilisateur = "###";
$motdpasse = "####";
$baseddonnee ="####";
$comptertuples = mysql_connect ( $serveur, $utilisateur, $motdpasse);
mysql_select_db($baseddonnee, $comptertuples);
$query="SELECT * FROM newsletter";
$result=mysql_query($query);
for($i=0;$i<mysql_num_rows($result);$i++){
$id=mysql_result($result,$i,$result['id']);
$courriel=mysql_result($result,$i,$result['email']);
$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
$serveur = "####";
$utilisateur = "####";
$motdpasse = "####";
$baseddonnee ="####";
$comptertuples = mysql_connect ( $serveur, $utilisateur, $motdpasse);
mysql_select_db($baseddonnee, $comptertuples);
$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: dokoers communication <info@dokoers.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,$result['id']);
$courriel=mysql_result($result,$i,$result['email']);
/* 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 } ?>
caporga
moogli
le 27/12/2007 à 22:41
moogli
salut,

elève le @ devant la fonction mail afin davoir un éventuel message d'erreur sur la fonction mail.

A tu vérifié si mail n'était pas "arrêté" par un quelconque anti spam?

si mes souvenirs sont bon te manque des morceaux dans l'entete :)

@+
Il en faut peu pour être heureux !!!!!
Necnom
le 28/12/2007 à 02:13
Necnom
Ne manquerait-il pas des headers indispensables à l'envoi d'un mail ?
Par Exemple
<?php
$headers .= 'Delivered-to: '.$courriel."\n"; // Destinataire
?>

Si c'est le cas, il faudrait envisager une modification typographique de ton code.
-------------------------------------------
En lisant ton code, j'ai appris que l'on pouvait faire
if ( blablablabla ) { ?> html html html <?php }

Au lieu de
if ( blablabla ) { echo'html html html html'; }

Quelqu'un pourrait me le confirmer s.v.p ?
Necnom :)
caporga
le 28/12/2007 à 10:12
caporga
après toute une nuit voila un code qui marche (sauf la statistique d'envoie qui englobe tous les mails)


<?php 
$courriels="";
$newsletter=isset($_POST['newsletter'])?$_POST['newsletter']:"";
$sujet=isset($_POST['sujet'])?$_POST['sujet']:"Newsletter";
$send=isset($_POST['send'])?$_POST['send']:"";
$serveur = "############";
$utilisateur = "###############";
$motdpasse = "############";
$baseddonnee ="###########";
$comptertuples = mysql_connect ( $serveur, $utilisateur, $motdpasse);
mysql_select_db($baseddonnee, $comptertuples);
$query="SELECT * FROM newsletter";
$result = mysql_query($query) or die(mysql_error());
for($i=0;$i<mysql_num_rows($result);$i++){
$id=mysql_result($result,$i,"id");
$courriel=mysql_result($result,$i,"email");
$courriels.=$courriel.";";}
if($send=="apercu"){?>
<p>Aperçu de la newsletter : <? echo $courriels ?></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>
<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>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><br /></td>
</tr>
</table>
<p>
<?php
}
elseif($send=="send"){
?>
Envoi en cours... Veuillez patienter</p>
<?php
$serveur = "##############";
$utilisateur = "#############";
$motdpasse = "#############";
$baseddonnee ="###########";
$comptertuples = mysql_connect ( $serveur, $utilisateur, $motdpasse);
mysql_select_db($baseddonnee, $comptertuples);
$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: ############# <info@##########.com>\n";
$headers .= "Date:" . date("D, d M Y h:s:i") . " +0300n";
//$headers .= "Bcc: societe@domaine.com\n";
for($i=0;$i<sizeof($result);$i++){
echo $result[$i];
/* et hop, à la poste */
if(@mail($courriels, $sujet, $newsletter, $headers)){
$succes .= $courriels."<br />";
$succes_nb++;
}
else{
$nope .= $courriels."<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 } ?>
caporga
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours