Problème d'envoi email avec pièce jointe

Résolu/Fermé
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012 - 12 avril 2011 à 13:37
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012 - 13 avril 2011 à 12:28
Bonjour,

Lorsque je veux envoyer mon email avec une pièce jointe que je sélectionne dans mon PC,j'ai comme erreur ceci:
Warning: fopen() [function.fopen]: Filename cannot be empty in /compte/scriptphp/liste_diffusion.php on line 76
ouverture du fichier impossible ...


Au vu du message d'erreur,je comprends que le fichier n'as de nom,mais pourtant je sélectionne bien un fichier,voici mon code:

<?php
 $texte_message=$_POST['message'];
 $mail = str_replace(" ",",",$_POST['email']);
 $sujet='Lettre d\'information ';

/* partie générale de l'en-tête
 ******************************/
 $entete  ='From: "Equipe Site "<newsletter@moi.com>'."\n"; 
 $entete .= "MIME-Version: 1.0\r\n";
 $entete .= "X-Mailer: PHP\r\n";
 $message ='<html>
	 <head>
	 <title>Message du site</title>
	 <style>
#conteneur {
 top:45%;
 width:500px;
 margin:0 auto;
 background:#FFFFFF;
 }
 
 #header{
 width:500px;
 background:#FFFFFF;
 }
 
 #corps{
 width:500px;
 background:#FFFFFF;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 color:#000000;
 }
 
  #footer{
 width:500px;
 height:2px;
 font-family:Verdana, Arial, Helvetica, sans-serif; 
 color: #999999;
 font-size:9px;
 text-align:center;
 }
</style>

	 </head>
	 <body>
	
<div id="conteneur">
<div id="header">
<img src="https://d39f23jfph0ylk.cloudfront.net/moi.com.jpg" />
</div>
<br><br>
<div id="corps">
<p>'.$texte_message.'</p>

</div>
<br><br>
<div id="footer">Ce mail a été adressé depuis le site association.....</div>

</div>
	 </body>
	 </html>'; 
	 

/******************************
 * ajout d'un fichier joint
 ******************************/
 $fich= $_FILES['joint']['tmp_name'];
 $taille = $_FILES['joint']['size'];
 $type = $_FILES['joint']['type'];
 $nom = $_FILES['joint']['name'];


// ouverture du fichier joint uploadé en lecture
 $f = fopen($fich, "r") or die("ouverture du fichier $fich impossible ...");
// récupération du code du fichier joint
 $code =fread($f, $taille);
// encodage standard
 $code = chunk_split(base64_encode($code));

 /* dans le cas de l'envoi d'un fichier joint
 * il convient de séparer le corps du message du fichier
 * pour cela on utilise un identifiant de séparateur
 *******************************************************/
// identifiant de séparateur, en principe unique
 $limite = md5(uniqid(time() ));

/* composition de l'en-tête du message :
 * le message textuel suivi du code du fichier
 *********************************************/
 $entete .= "Content-Type: multipart/mixed;boundary=$limite\r\n\r\n";

 $entete .= "--$limite\r\n";
 $entete .= 'Content-Type: text/html; charset="utf8"'."\n"; 
 $entete .= 'Content-Transfer-Encoding: 8bit'; 
 $entete .= "$message\r\n";

 $entete .= "--$limite\r\n";
 $entete .= "Content-type:$type;name=$nom\r\n";
 $entete .= "Content-transfer-encoding:base64\r\n\r\n";
 $entete .= "$code\r\n";
 $entete .= "--$limite--";

 /**************************
 * envoi du message AVEC pj
 ***************************/
 mail($mail,$sujet,"",$entete);
?>


Pouvez vous me dire où se situe mon erreur?

Merci d'avance

6 réponses

Pour mettre une pièce jointe dans un envoi automatisé(avec la fonction mail()) il faut mettre l'image en ligne et envoyer le lien vers celle ci.
0
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012
12 avril 2011 à 19:34
Moi,je veux sélectionner le fichier sur mon disque dur et l'envoyer,un peu comme on envoi un cv dans une entreprise
0
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012
13 avril 2011 à 11:28
UP^^
0
Bonjour

As-tu fait un echo $_FILES['joint']['tmp_name'] pour t'assurer que le nom est bien là où tu l'attends ?
S'il n'y a rien, peux-tu montrer le formulaire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012
13 avril 2011 à 11:51
Merci le père pour ta réponse!

Quand je fais un echo $_FILES['joint']['tmp_name'],effectivement je n'ai rien qui s'affiche à l'écran.
Voici mon formulaire:
 <form name="diffusion" method="post" action="scriptphp/liste_diffusion.php">
              
       <font size="3" face="Courier New, Courier, monospace">Destinataire :</font><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <textarea name="email" id="mail" cols="30" rows="7" disabled="disabled">
       <?php
	           while ($user = mysql_fetch_assoc($verif))
	           {
	         ?>
             <?php echo $user['mail']; ?>
             <?php 
		      } 
		     ?>
       </textarea>
       
       
       <br /><br />
        <font size="3" face="Courier New, Courier, monospace">Message :</font><br /><br />
        <textarea name="message" id="message" cols="30" rows="7"></textarea>
        <br /><br /><br />

 <font size="3" face="Courier New, Courier, monospace">Fichier :</font>&nbsp;

<input type="file" name="joint"/>   <br /><br /> <br /><br />

<input type="submit" name="button" value="Envoyer"/>
       
       </form>
0
deponton Messages postés 21 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 3 mai 2012
13 avril 2011 à 12:28
problème résolu!

merci le père,car j'ai bien revu mon formulaire et j'ai vu que j'avais oublié de mettre
ENCTYPE='multipart/form-data'
.

merci beaucoup
0