Envoi d'un mail vers plusieurs destinataires

Fermé
Melvyn07 Messages postés 2 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 27 mai 2011 - 27 mai 2011 à 10:23
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 27 mai 2011 à 11:56
Bonjour à tous

Alors voilà, comme expliqué dans mon titre, j'essaye de faire en sorte de pouvoir envoyer des mails à plusieurs destinataires en même temps. J'utilise pour ça un jquery de "multiselect" qui permet à l'utilisateur de sélectionner les adresses auxquelles il désire envoyer ce mail.

Voilà mon premier php qui me permet de faire ça (Sachant que mes include sont plus haut dans le programme):

<?php 
$requete2 = "SELECT email_prospect FROM prospects WHERE code_client=".$lecodeclient." AND email_prospect != '' ";
$reponse2 = mysql_query($requete2) or die(mysql_error());
	
			
echo'
	<p> Veuillez choisir les destinataires : </p><br/><br/>
	<form action="selectadresses.php" method="POST">
		<center><select id="prospects" class="multiselect" multiple="multiple" name="prospects[]">';
		while ($donnees = mysql_fetch_array($reponse2))
		{
			echo'<option value='.$donnees['email_prospect'].'>'.$donnees['email_prospect'].'</option>';
		}
			echo'</select></br>
				 <input type="submit" value="Sélectionner les destinataires"/>
                 </center></form>';

?>




Après ça je vais vers un formulaire qui affiche la liste des destinataires sélectionnés et donne à l'utilisateur la possibilité de faire son mail avec les champs sujet et message.

<?php  session_start();	?>
<form name='form1' method='post' action='email.php'>
		<table border='0'>
		<tr>
			<td align='left'> À </td>
			<td align='left' size='79'>
			<?php
				$to = '';
				if(isset($_POST['prospects']) AND is_array($_POST['prospects']))
					{							
					foreach($_POST['prospects'] AS $prosp)
						{						
						echo ' - '.($prosp) . '<br/>';
						$to .= '\'' . $prosp . '\', ';
				
						}
	        				$to = rtrim($to, ', ');
         					$_SESSION["to"] = $to;	
							
						}
					echo $to;
				?>
				</td>
			</tr>				
			<tr>
				<td align='left'> Sujet </td>
				<td align='left'><input name='sujet' type='text' id='sujet2' size='79'></td>
			</tr>
			<tr>
				<td>Message </td>
				<td><textarea name='message' cols='60' rows='8'></textarea></td> 
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td><input type='submit' name='Submit' value='Envoyer'>
				<input type='reset' name='Submit2' value='Rétablir'>
				</td>
			</tr>
		</table>
		<p>&nbsp; </p>
	</form>




Donc jusque là pas de soucis à mon avis, mes echo avec plusieurs destinataires me renvoient bien ce qu'il faut :
- ennobijo_273@yopmail.com
- ujiffullu_435@yopmail.com
'ennobijo_273@yopmail.com', 'ujiffullu_435@yopmail.com'

La 3eme ligne était plus là pour vérifier directement mes codes :D


Ensuite viens le code d'envois du mail :

<?php
session_start();
include ("../code_client.php");

$requete = "SELECT email_client FROM clients WHERE code_client=".$lecodeclient."";
$reponse = mysql_query($requete) or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
$Mail=$donnees['email_client'];

$object = $_POST['sujet'];

$msg = $_POST['message'];

$to = $_SESSION["to"];

$mailheaders = "From:".$Mail."\n";
$mailheaders .= "To:".$to."\n";
$mailheaders .= "Cci:\n";
$mailheaders .= "Reply-To: No reply <>\n\n"; 

mail($to, $object, $msg, $mailheaders);

if(mail($to, $object, $msg, $mailheaders)){echo "TRUE <br/> $Mail <br/> $object <br/> $msg <br/> $to";}
else{echo "FALSE <br/> $Mail <br/> $object <br/> $msg <br/> $to";} 
?>



Donc voilà le fameux code. Quoi que je fasse il me renvois toujours un truc du genre :
FALSE
contact@agence-kangen.fr
test mail - sujet
test mail - message
'ennobijo_273@yopmail.com', 'ujiffullu_435@yopmail.com'



Donc voilà j'en viens à ma question, comment faire pour que mon mail parte ? J'ai eu beau chercher je ne vois vraiment pas ce qui coince.

Merci d'avance

Melvyn






4 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
Modifié par Nico_ le 27/05/2011 à 11:55
bonjour,
Voici un code que j'avais fais !
Mettre tout le code dans une seule page,
Il faut simplement que tu modifies les adresse et nom du site et la requête sql pour la récupération des informations.

<?php 
 $email_dest = "adresse_de_ton_site@yahoo.fr"; // adresse mail de l'association pour en avoir une copie 
 foreach($_POST['destinataire'] as $key=>$dest) 
  if (trim($dest) === '') unset($_POST['destinataire'][$key]); 
 $bcc = implode(', ', $_POST['destinataire']);// condition de recupereration des emails 

 if ($_POST['envoi'])  
  { 
   // E-mail headers: 
   $headers ="MIME-Version: 1.0 \n"; 
   $headers .="From: Nom de ton site <adresse_de_ton_site@yahoo.fr>\n"; 
   $headers .="Content-Type: text/html; charset=iso-8859-15 \n"; 
   $headers .= "BCC:".$bcc."\r\n"; // envois en copie cache pour ne pas divulguer les emails 

   $subject = $_POST['champ1']; 

   $partie_entete = "<html><head> 
   <meta http-equiv=Content-Type content=text/html; charset=iso-8859-15> 
   <style type=\"text/css\"> 

   body {width: 930px;margin-left:5%;margin-right:5%;} 
   #en_tete {width: 100%;height: 100px;margin-bottom: 20px;margin-top:20px;margin-left:5px;margin-right:5px;background-color:#000000; 
   text-align 
   border: 1px solid #FFFFFF; 
   } 
   #corps { 
   width: 100%; 
   text-align:left; 
      margin-bottom: 5px; 
      margin-left 10px; 
      padding: 11px;  
      background-color: #FFF;  
      background-image:none;   
      border: 2px solid #FF0000; 
   } 
   #titre{ 
   bottom: 10px; 
   width: 100%; 
   line-height:20px; 
   vertical-align:middle; 
    padding: 0px; 
    margin-left:5px; 
   margin-right:5px; 
      text-align: center; 
     color : #3333cc; 
   font-family : \"Comic Sans MS\", Arial; 
   font-style : italic; 
   font-size : 17px; 
   font-weight : bold; 
   font-variant: small-caps; 
   } 

   #pied { 
   bottom: 20px; 
   width: 100%; 
   line-height:20px; 
   vertical-align:middle; 
    padding: 0px; 
    margin-left:5px; 
   margin-right:5px; 
      text-align: center; 
      background-color: #0000CC; 
      border: 1px solid #FF0000;  
   font-family : \"Courier New\", Arial; 
   font-style : italic; 
   font-size : 12px; 
   font-weight : bold; 
   color : #999999; 
   } 
     

   </style> 
   </head> 
   <body><div id=\"en_tete\"><img src=\"http://static.ccm2.net/www.commentcamarche.net/_skin/_local/img/logo.png\" alt=\"titre\" /> </div><div id=\"corps\"> 
   <br /><div id=\"titre\">".$subject."</div><br />"; 


   if ($_POST['nbre_zones_texte'] != 0)  
    { 
     $partie_zone_texte = "<font face='comic sans MS' size='3' color='#3333CC'>" . nl2br($_POST['zone_texte']) . "</font><br />"; 
     $partie_zone_texte = stripslashes($partie_zone_texte); 
    } 

   $fin = "<br /><br /><hr /><font face='comic sans MS' size='3' color='#CC3333'>NOM DE TON SITE <a href=\"https://www.google.fr/?gws_rd=ssl\">le site (son nom) !</a> </font> <br /> 
   Si vous recevez ce mail et qu'il ne vous ait pas destiné, le signaler en répondant à ce mail et le supprimer. 
    </div><div id=\"pied\">JSP_BO 2009  Reproduction Interdite</div></body></html>"; 

   $sortie = $partie_entete . $partie_zone_texte . $fin; 

   // Send the e-mail 
   if (@!mail($email_dest,$subject,$sortie,$headers))  
    { 
     echo "Envoi du formulaire impossible"; 
    }  
   else  
    {   
     // Closing if !mail... 
     // Renvoi vers la page de confirmation ou message d'information 
     echo '<div>- Le message à  bien été envoyé aux destinataires cochés.</div>' ; 
    } // Fin du else 
 } // Closing if edit 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Envoie du mail</title> 
</head> 
<body> 
 <h1>Envoyer un mail</h1> 
  
 <form name="mail_form" method="post" action="#" onsubmit="return verifSelection()"> 
  <table width="624" border="0" align="center"> 
<tr> 
  <td width="135" valign="top" class="Style15">Destinataire(s), cocher les cases.</td> 
  <td width="479"><div align="left"> 
     
          <ul>  

 <fieldset><legend>Liste des membres</legend> 
       <?php 
    // ICI TA REQUETTE SQL POUR RECUPERER LA LISTE DES MEMBRE : LOGIN + ADRESSE MAIL 
    // DANS CE CODE: $recup_data['mail'] CONTIENT L'ADRESSE MAIL 
  //    $recup_data['login'] CONTIENT LE NOM DE L'UTILISATEUR 
   
  // JE ME CONNCETE A LA BDD 
  require 'require/bdd.php' ; 
     
$reponse = mysql_query('SELECT * FROM membre '); 
while ($recup_data = mysql_fetch_array($reponse) ) 
{ 
 echo ' <li> <input type="checkbox" name="destinataire[]" value="' . $recup_data['mail']. '"/> ' . $recup_data['login'] . '</li> '; } 
?> 
 </ul> 
  </div></td> 
</tr> 
<tr> 
      <td><font size="2" face="Verdana" class="Style15">Objet</font></td> 
      <td><input name="champ1" type="text" size="60" /></td> 
    </tr><tr> 
      <td valign="top"><font size="2" face="Verdana" class="Style15">Message</font></td> 
      <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td> 
    </tr><tr> 
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="1" /> 
        <input name="nbre_zones_texte" type="hidden" value="1" /> 
<input name="nbre_zone_email" type="hidden" value="0" /> 
<input name="titre_champ1" type="hidden" value="Objet" /> 
<input name="titre_zone" type="hidden" value="Message" /></td> 
      <td><div align="center"> 
        <p>Une fois après avoir cliqué, le message sera envoyer aux destinataires cochés.</p> 
           <input name="envoi" type="submit" value="Envoyer" />   
           <input name="Reset" type="reset"  value="Effacer" /> 
            
         </div></td> 
    </tr> 
  </table> 
  </form> 
  
 

Si résolu, n'oublie pas de cliquer !
1
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 27/05/2011 à 11:09
Salut,
tu dois spécifier en quoi tu veux envoyer tes mails (texte, html...) donc ajouter ses lignes :
     $mailheaders .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
     $mailheaders .='Content-Transfer-Encoding: 8bit';  

et entre tes adresses mails, tu as quoi ? une virgule ? (il me semble qu'il faut un point virgule)
0
Melvyn07 Messages postés 2 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 27 mai 2011
27 mai 2011 à 11:35
Salut,
Tout d'abord merci pour ta réponse

Je viens de vérifier la doc il s'agit bien de virgules dans le mail.

Sinon j'ai rajouté les headers, mais mon mail ne pars pas mieux =(
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 27/05/2011 à 11:56
tu recois bien toutes tes variables ?
tu test en local ?
0