Problème d'envoi email avec pièce jointe
Résolu
deponton
Messages postés
24
Statut
Membre
-
deponton Messages postés 24 Statut Membre -
deponton Messages postés 24 Statut Membre -
Bonjour,
Lorsque je veux envoyer mon email avec une pièce jointe que je sélectionne dans mon PC,j'ai comme erreur ceci:
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:
Pouvez vous me dire où se situe mon erreur?
Merci d'avance
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.
-
Moi,je veux sélectionner le fichier sur mon disque dur et l'envoyer,un peu comme on envoi un cv dans une entreprise
-
-
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 ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 /> <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> <input type="file" name="joint"/> <br /><br /> <br /><br /> <input type="submit" name="button" value="Envoyer"/> </form> -
problème résolu!
merci le père,car j'ai bien revu mon formulaire et j'ai vu que j'avais oublié de mettreENCTYPE='multipart/form-data'
.
merci beaucoup