Erreur lors de l'envoi d'une piece jointe

Résolu/Fermé
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014 - 26 mars 2013 à 21:29
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014 - 27 mars 2013 à 22:20
Bonjour,

J'ai une erreur au moment de l'envoi d'une pièce jointe , les données sont récupérer via un formulaire pour être envoyer à une adresse mail , tout passe sauf la pièce jointe .

L'erreur remonté après l'envoi :

Warning: file_get_contents([nom du fichier]) [function.file-get-contents]: failed to open stream:
No such file or directory in /homez.579/relevepa/www/form_mail.php on line 46


La ligne incriminée :


// Lecture du fichier

$fichier = '[nom du fichier]';
$contenu = file_get_contents($fichier);
$attachement = "\n------=$limite\n";

// Fichier Image

$attachement .= "Content-Type: image/jpeg; name=\"[nom du fichier]\"\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=\"[nom du fichier]\"\n\n";

// Joint du fichier en l'encodant en base 64

$attachement .= chunk_split(base64_encode($contenu));


Merci d'avance!
;-)


27 réponses

cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014
27 mars 2013 à 20:18
Pas de soucis ce code je le comprend bien , et le possède dans le traitement.
0
Utilisateur anonyme
27 mars 2013 à 20:20
justement, en le simplifiant comme ça, est-ce-que ça marche ? Si oui, on compliquera progressivement
0
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014
27 mars 2013 à 20:30
oui cela fonctionne j'ai bien le "coucou "
0
Utilisateur anonyme
27 mars 2013 à 20:39
Essaye maintenant
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps)) {
C'est à dire comme avant mais SANS les en-têtes supplémentaires.
Ta pièce jointe étant mal faite, si tu reçois quelque chose tu verras le code de la pièce jointe au milieu du message mais ce n'est pas grave.
0
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014
27 mars 2013 à 20:47
Tout a fait je reçoit bien mon corps de mail avec les intitulé de chaque valeur (vide par contre) :


Message de :
Reference:
Photo:
...........=
(le code de notre piece jointe)
0

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

Posez votre question
J'essaye de corriger ce qui ne va pas et je reviens
Mais il faut être conscient que même si ça marche, ça ne va pas être peaufiné et qu'il vaut mieux utiliser de bibliothèques toutes faites pour l'envoi de mails. J'ai longtemps fait mes mails "à la main" mais maintenant utilise phpMailer.
0
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014
27 mars 2013 à 21:25
J' entend très souvent parler de phpMailer mais ne sachant pas m'en servir j'ai opter pour la solution "débrouille"

Je ne t'ai pas mis mon code entier :

?php

$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Merci, votre demande à bien été prise en compte. Vous pouvez quitter le site en toute sécurité.";
$message = $msg_erreur;

define('MAIL_DESTINATAIRE','cpcr75@gmail.com');
define('MAIL_SUJET','Index PHOTO');

// vérification des champs

if (empty($_POST['nom']))
$message .= "Votre nom<br/>";

if (empty($_POST['email']))
$message .= "Votre adresse mail<br/>";

if (empty($_POST['ref_gaz']))
$message .= "Votre reference<br/>";

// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
echo $message;
die();
}

//Préparation de l'entête du mail:

$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/html; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: base64\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";

// Traitement PJ
// Lecture du fichier

$fichier = $_FILES['photo']['tmp_name'];
$contenu = file_get_contents($fichier);
$attachement = "\n------=$limite\n";

// Fichier Image

$attachement .= "Content-Type: image/jpeg; name=\"[nom du fichier]\"\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=\"" . $_FILES['photo']['name']."\"\n\n";

// Joint du fichier en l'encodant en base 64

$attachement .= chunk_split(base64_encode($contenu));


// Préparation du corps du mail

$mail_corps = "Message de : $nom, $email\n";
$mail_corps .= "Reference : $ref_gaz\n";
$mail_corps .= "Photo : $attachement\n";
$mail_corps .= "Commentaires : $comments\n";

// Envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps)) {

//Le mail est bien expédié

echo $msg_ok;
} else {

//Le mail n'a pas été expédié
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
?>
0
cpcr Messages postés 29 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 16 avril 2014
27 mars 2013 à 22:20
Effectivement avec ton code ça fonctionne parfaitement !!

Et je comprend beaucoup mieux les commandes, tu vient de faire carrément un tuto sur le sujet , et un cours personnalise pour moi .

Je vais suivre tes conseils et "essayer" de comprendre PHPMAILER.

Je te remercie infiniment et te souhaite une excellente soirée .
0