probleme envoi plusieurs mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme envoi plusieurs mail

par etc57 » 27 mai 2008, 09:19

je vous remercie tous de votre aide, qui ma aidé a trouvé mon problème et le coriger

par dunbar » 26 mai 2008, 18:53

Sinon :
$nomduguguss="$civiliteMail $nomMail $prenomMail";
se remplace plutôt par :
$nomduguguss=$civiliteMail .' '. $nomMail .' '. $prenomMail;
pour garder les espaces
Ah..... oui les espaces j'ai oublier :oops: sorry :wink:

par zeus » 26 mai 2008, 17:53

C'est sympa de ta part dunbar, mais il vaut mieux l'aider à comprendre que corriger à sa place ;)

Sinon :
$nomduguguss="$civiliteMail $nomMail $prenomMail";
se remplace plutôt par :
$nomduguguss=$civiliteMail .' '. $nomMail .' '. $prenomMail;
pour garder les espaces

par dunbar » 26 mai 2008, 17:29

Salut,

A première vue il faudrait peut-être déjà demander a MySQL de te retourner un message en cas d'erreur :arrow:
Un truc du genre
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
Puis il y aurais bien ceci :
sql = "SELECT * FROM newsletters WHERE newsletter_id=".$id.""; 
Correction :?:
$sql = "SELECT * FROM newsletters WHERE newsletter_id=".$id.""; 
$nomduguguss="$civiliteMail $nomMail $prenomMail"; 
Correction
$nomduguguss=$civiliteMail . $nomMail . $prenomMail; 
id='.$id;
Correction je suppose :oops:
Mais je comprend pas se que cela fait là :?:
$id=$id;
Et pour finir
$temp = str_replace("<","<",$nomduguguss); 
$fichier .= 'Bonjour,' .stripslashes($temp); 
$fichier .='</span><br></td></tr><tr><td align="left"><span class="presentation">'; 
$temp = str_replace("<","<",$commercial); 
$fichier .= 'Commercial : ' .stripslashes($temp); 
$fichier .='</span><br></td></tr><tr><td align="right"> 

<br><br><p><span class="newsletter">'; 

$temp = str_replace("<","<",$var['newsletter_nom']);  
$temp = str_replace(">",">",$temp); 
$temp = str_replace("&","&",$temp); 
$fichier .= stripslashes($temp); 

$fichier .='</span><br><span class="date">'; 

$fichier .= date( 'd.m.Y',$var['newsletter_date']); 

$fichier .='</span></p></td></tr><tr><td width="400"><p align="justify" class="texte" style="margin:10px">'; 

$temp = str_replace("<","<",$var['newsletter_texte']);  
$temp = str_replace(">",">",$temp); 
$temp = str_replace("&","&",$temp); 
$fichier .= stripslashes($temp); 


Correction
$temp = str_replace("<","<",$nomduguguss); 
$fichier .= 'Bonjour,' .stripslashes($temp); 
$fichier .='</span><br></td></tr><tr><td align="left"><span class="presentation">'; 
$temp .= str_replace("<","<",$commercial); 
$fichier .= 'Commercial : ' .stripslashes($temp); 
$fichier .='</span><br></td></tr><tr><td align="right"> 

<br><br><p><span class="newsletter">'; 

$temp .= str_replace("<","<",$var['newsletter_nom']);  
$temp .= str_replace(">",">",$temp); 
$temp .= str_replace("&","&",$temp); 
$fichier .= stripslashes($temp); 

$fichier .='</span><br><span class="date">'; 

$fichier .= date( 'd.m.Y',$var['newsletter_date']); 

$fichier .='</span></p></td></tr><tr><td width="400"><p align="justify" class="texte" style="margin:10px">'; 

$temp .= str_replace("<","<",$var['newsletter_texte']);  
$temp .= str_replace(">",">",$temp); 
$temp .= str_replace("&","&",$temp); 
$fichier .= stripslashes($temp); 


Avec un peu de chance qui sait :wink:

par caroube » 26 mai 2008, 14:20

Personnellement, je mettrais le corps HTML de l'email dans un fichier externe avec des NOM_EXPEDITEUR et des NOM_EXPEDITEUR.
Puis, mon programme lirait ce fichier externe et dans la boucle d'envoi, je ne ferais juste que des remplacements des NOM_EXPEDITEUR et NOM_EXPEDITEUR par leurs valeurs.

@Zeus : je m'étais fait exactement la même remarque. :roll: Savoir qu'on est des gugusses potentiels pour l'une des principales agences de com lorraine, c'est moyen moyen ... Ne pas oublier Google et le fait qu'un jour, quelqu'un en tapant lorweb tombera sur cette page !

par zeus » 26 mai 2008, 14:01

<mode a moitié HS>
$nomdugugus
J'espère pour toi que tu ne feras jamais l'oubli du $ ...
Je ne pense pas que j'apprécierais de recevoir un mail avec "nomdugugus" en entête :?
</mode>

par etc57 » 26 mai 2008, 13:39

je viens de m'apercevoir que le probleme venait du corps de mon corps de message ( la partie $ fichier )

quand je la change les mail s'envoie aux 2 personnes.

JE ne comprend pas comment le bug peut venir de la car si il y avait un souci cela ne devrait pas m'envoyer le 1 mail non ?

par caroube » 26 mai 2008, 13:34

POur déterminer où est le problème, commence par le décomposer.
Fais juste une boucle du type
 for ($i=1;$i<=$nbligne;$i++) {
  $sujet ="Newsletter $i";
  $body ="Test $i";
  mail($destinataire[$i],$sujet,$fichier,$headers); 
}
Ensuite, sors de ta boucle tout ce qui n'a pas besoin d'être positionné à chaque fois. Du type ce n'est pas la peine de faire 50 fois $expediteur = "[email protected]"

par etc57 » 26 mai 2008, 13:15

le mail au premier utilisateur de la liste est envoye

ensuite il semble que le script s'arrete et j'obtiens une page blanche

lors de l'execution quand il n'y a que 1 destinataire, la requete s'execute en genre 0.5s

des que je passe a 2 utilisateur, la requete mets 10s a s'executer et seul le premier destinataire recoit le mail avant l'erreur.

par ouckileou » 26 mai 2008, 13:02

ça veut dire quoi "elle bug" ???

probleme envoi plusieurs mail

par etc57 » 26 mai 2008, 12:58

Bonjour,

Je vous présente ma fonction demailing de newletter, qui mail a partir d'un groupe d'utilisateur défini par l'expéditaire.

quand il n'y a que 1 destinataire, la fonction marche parfaitement
des que je passe a 2 elle bug
donc je ne comprend pas ce qui fait que ca ne marche pas des qu'on a plus d'un destinataire.

$sql = "SELECT * FROM newsletters WHERE newsletter_id=".$id."";	
$result = mysql_query($sql);
$var = mysql_fetch_array($result);
		
		$sql2 = "SELECT * FROM users WHERE users_group IN($listgroups) AND users_newsletter=1";
		$result2 = mysql_query($sql2);
		$nbligne=mysql_num_rows($result2);
		
		for ($i=1;$i<=$nbligne;$i++)
		{
		$ligne=mysql_fetch_array($result2);
		$civiliteMail=$ligne["users_civilite"];
		$nomMail=htmlentities($ligne["users_lastname"]);
		$prenomMail=htmlentities($ligne["users_name"]);
		$mailMail=$ligne["users_email"];
		$commercial=htmlentities($ligne["commercial"]);
		$nomduguguss="$civiliteMail $nomMail $prenomMail";
		
		

$email_expediteur='[email protected]';
$email_reply='[email protected]';

$message_texte ='Bonjour, '.$nomduguguss."\n".'';
id='.$id;
$destinataire = $mailMail;

$sujet ='Newsletter Leaseplan';


$frontiere = '-----=' . md5(uniqid(mt_rand()));


$headers = 'From: "Leaseplan" <'.$email_expediteur.'>'."\n";
$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';

$fichier = 'This is a multi-part message in MIME format.'."\n\n";
$fichier .= '--'.$frontiere."\n";
$fichier .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$fichier .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$fichier .= $message_texte."\n\n";

$fichier .= '--'.$frontiere."\n";
$fichier .= 'Content-Type: text/html; charset = \"iso-8859-1"'.\"\n"; 
$fichier .= 'Content-Transfer-Encoding: quoted-printable'."\n\n"; 

$fichier .= '<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Newsletter</title>
<style type="text/css">
<!--
liste des styles ....
-->
</style>
</head>

<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<table width="740" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td colspan="2" height="152" background="../newsletter/img/header.jpg">&nbsp;</td>
</tr>
<tr>
<td align="center" valign="top"><br>
<br>
<table width="400" border="0" cellspacing="0" cellpadding="0"><tr>
<td align="left"><span class="presentation2">';
$temp = str_replace("<","<",$nomduguguss);
$fichier .= 'Bonjour,' .stripslashes($temp);
$fichier .='</span><br></td></tr><tr><td align="left"><span class="presentation">';
$temp = str_replace("<","<",$commercial);
$fichier .= 'Commercial : ' .stripslashes($temp);
$fichier .='</span><br></td></tr><tr><td align="right">

<br><br><p><span class="newsletter">';

$temp = str_replace("<","<",$var['newsletter_nom']); 
$temp = str_replace(">",">",$temp);
$temp = str_replace("&","&",$temp);
$fichier .= stripslashes($temp);

$fichier .='</span><br><span class="date">';

$fichier .= date( 'd.m.Y',$var['newsletter_date']);

$fichier .='</span></p></td></tr><tr><td width="400"><p align="justify" class="texte" style="margin:10px">';

$temp = str_replace("<","<",$var['newsletter_texte']); 
$temp = str_replace(">",">",$temp);
$temp = str_replace("&","&",$temp);
$fichier .= stripslashes($temp);



$fichier .= ' <p><br>
    </p>
    </td></tr>
  <tr>
    <td height="62" colspan="2" class="fondorange"><p class="blanc" style="margin:10px">&nbsp;<br>
      &nbsp;</p></td>
  </tr>
</table>
</body>
</html>';


mail($destinataire,$sujet,$fichier,$headers);

}

Si vous pouvez m'eclairer sur les raisons

merci d'avance