envoi mail php pièce jointe a plusieurs destinataires

envoi mail php pièce jointe a plusieurs destinataires - PHP - Programmation

Marsh Posté le 19-04-2009 à 18:53:13    

Bonjour,  
 
Je cherche à envoyer un mail avec pièces jointes a plusieurs destinataires.
En gros, j'ai un formulaire où les gens inscrivent leur adresse email et c enregistrer direct ds la bdd.
Ensuite, j'ai fais un formulaire avec "sujet", "message", et "pièce jointe" et quand on clik sur envoyer, cela envoie a toutes les adresses email contenues dans la base de données.
J'ai fais quinze mille essais, et cela marche pas a chaque fois. La plupart du temps j'ai bien le message, mais sans la pièce jointe. Ou alors j'ai la pièce jointe mais sans le message...  
Comment faut il faire ?
 
Ci dessous mon code:

Citation :

<p class="titre">Envoi de la newsletter <br>
 
</P>
 
 
<p class="bla"><b><u></b></u>
<fieldset>
       <legend><b>Formulaire:</B></legend>
     
<form name="contact" method="post" action="index2.php?page=newslet" enctype="multipart/form-data">
<P>Sujet:
<INPUT type="text" name="sujet" size=50>
<p>
Message:
<textarea name="msg" cols=90 rows=25></textarea>
 
<input type="hidden" name="max_file_size" value="100000">  
Pièce Jointe:<input name="attach" type="file" size="16">
</p>
</p></fieldset><center><input type="reset" name="Reset" value="Effacer">  
<INPUT type="submit" value="Envoyer"></center>
</FORM>


 
newslet.php :
 

Citation :

<?php
// Connexion au serveur mysql
$connect = mysql_connect("***", "***", "***" );  
// sélection de la base de données
mysql_select_db("************" );
 
 
//Le fichier attaché
if (is_uploaded_file($attach)) {
    $file = fopen($attach, "r" );
    $contents = fread($file, $attach_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    fclose($file);
 
   $entetes.= "MIME-version: 1.0\n";
   $entetes.= "Content-type: multipart/mixed; ";
   $entetes.= "boundary=\"Message-Boundary\"\n";
   $entetes.= "Content-transfer-encoding: 7BIT\n";
   $entetes.= "From : bideulemachin.fr";
   
    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";
 
    $msg .= "\n\n--Message-Boundary\n";
    $msg .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg .= "Content-Transfer-Encoding: BASE64\n";
    $msg .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg .= "$encoded_attach\n";
    $msg .= "--Message-Boundary--\n";
  }
 
 $msg = $body_top.stripslashes($msg);
// on selectionne tous les emails de la base de données
$req=mysql_query("SELECT mail FROM emails" );
 
// On envoi la lettre d'info à tous les emails
// Boucle while pour parcourir les enregistrements
// et envoi avec la fonction mail() placée dans la boucle...
 
while ($res = mysql_fetch_array($req))
{
// Les variables sujet et message sont récupérés
// via le formulaire d'envoi
 
$retval = mail($res['mail'],$sujet,$msg,$entetes);
 
// On affiche un message OK ou ERREUR pour chaque email
 
echo '<center>Envoi à ' . $res['mail'] . ' : ';
if ($retval) {
echo 'OK<br>';
} else {
echo 'ERREUR<br>';
}
}
 
// On ferme la connection
mysql_close();
?>


 
 
Merci pour votre aide!
 
 

Reply

Marsh Posté le 19-04-2009 à 18:53:13   

Reply

Marsh Posté le 19-04-2009 à 19:03:21    

utilise un librairie pour te simplifier la vie : swiftmailer


---------------

Reply

Marsh Posté le 19-04-2009 à 21:00:43    

OK. Mais je ne trouve rien sur envoi à PLUSIEURS DESTINATAIRES + PIECE JOINTE. Je trouve l'un ou l'autre mais pas les 2 en général...
 
Qn peut m'aider ???

Reply

Marsh Posté le 19-04-2009 à 21:39:49    

pear Mail ou Mail_Queue

Reply

Marsh Posté le 20-04-2009 à 10:03:24    

la librairie que je t'ai indiqué  le permet simplement ( soit un envoi en CC, soit un envoi avec des maisl séparés )


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed