zazounn | 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!
|