PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 17-04-2018 11:01:24

jf
Membre
Inscription : 17-04-2018
Messages : 3

envoi mail avec pièces jointes

Bonjour,

Je suis un autodidacte et je vous remercie de m'accueillir sur votre forum.

Je fais un site pour une entreprise (en php et mysql). Il s'agit d'envoyer des photos par mail pour signaler un problème.

J'ai trouvé des bouts de code sur internet.

Je sais envoyer le mail et une photo.

Dans mon script, je fais une boucle while qui est sensée afficher certaines catégories de photos contenues dans une table mysql.
Malheureusement une seule part...

Si quelqu'un prenait le temps de m'aider, ce serait vraiment gentil.
A bientôt.

PS: ci-dessous ma boucle.


//=====Ajout des pièces jointes.

    $q_files = mysql_query("SELECT * FROM jfbay_pf_files_$project WHERE prix = '$c_id' ");
    $g = 1;
    while($file = mysql_fetch_array($q_files)){
        $f_prefix  = $file['prefix'];
        $f_name    = strtolower($file['name']);
        $path = $path."project_".$project."/".$f_prefix."".$f_name;
        $fich = $path;
        $fichier   = fopen("$fich", "rb");
        $attachement1 = fread($fichier, filesize("$fich"));
        $attachement = chunk_split(base64_encode($attachement1));
        fclose($fichier);
        $message.= "Content-Type: image/jpeg; name=\"$f_name\"".$passage_ligne;
        $message.= "Content-Transfer-Encoding: base64".$passage_ligne;
        $message.= "Content-Disposition: attachment; filename=\"PHOTO ".$g++."\"".$passage_ligne;
        $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
        $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    }

mail($mail,$sujet,$message,$header);
 


Hors ligne

#2 17-04-2018 15:06:20

tof73
Membre
Inscription : 21-12-2014
Messages : 134
Site Web

Re : envoi mail avec pièces jointes

mélanger des codes sans les comprendre permet difficilement de faire quelque chose qui fonctionne. le contenu du fichier est dans $attachement et cette variable n'est plus utilisée une fois qu'elle contient le nécessaire.

ce qui est plus simple à débugger, c'est de partir d'un code qui utilise une librairie classique pour envoyer des emails complexes :
https://github.com/PHPMailer/PHPMailer/ … pload.phps

Hors ligne

#3 18-04-2018 04:21:45

jf
Membre
Inscription : 17-04-2018
Messages : 3

Re : envoi mail avec pièces jointes

Merci d'avoir pris le temps de répondre! Je vais regarder.

Hors ligne

#4 18-04-2018 07:16:17

jf
Membre
Inscription : 17-04-2018
Messages : 3

Re : envoi mail avec pièces jointes

Re bonjour,

je suis allé voir le lien et j'avoue que me plonger dans les nouvelles recherches que vous proposez est trop difficile pour moi.

J'ai donc continué à tatonner et chercher des interventions d'internautes qui avaient le même problème.

Et j'ai trouvé quelquechose qui a marché.
2 modifications:
   1/ Ajout de la ligne
       $message.= "--".$boundary.$passage_ligne;
   2/ sortie de la boucle de la dernière ligne
        $message.= $passage_ligne."--".$boundary."--".$passage_ligne;

Mon "niveau" ne me permets de comprendre vraiment ce qui s'est passé.
Je comprends que cela puisse vous agacer que des personnes comme moi cherchent de l'aide sans avoir fait les études adéquates et je vous suis d'autant plus reonnaissant que vous preniez le temps quand même.

Bon. Si dessous le code qui marche (toutes les photos partent dans le mail).

Encore merci et bonne journée !


$q_files = mysql_query("SELECT * FROM jfbay_pf_files_$project WHERE prix = '$c_id' ");
    $g = 1;
    $attachment = '';
    while($file = mysql_fetch_array($q_files)){
        $f_f = $g++;
        $f_prefix  = $file['prefix'];
        $f_name    = strtolower($file['name']);
        $path_img  = $path."project_".$project."/".$f_prefix."".$f_name;
        $fichier   = fopen("$path_img", "rb");
        $attachment = fread($fichier, filesize("$path_img"));
        $attachment = chunk_split(base64_encode($attachment));
        fclose($fichier);
        $message.= "--".$boundary.$passage_ligne; // nouvelle ligne
        $message.= "Content-Type: image/jpeg; name=\"PHOTO ".$f_f."\"".$passage_ligne;
        $message.= "Content-Transfer-Encoding: base64".$passage_ligne;
        $message.= "Content-Disposition: attachment; filename=\"PHOTO ".$f_f."\"".$passage_ligne;
        $message.= $passage_ligne.$attachment.$passage_ligne.$passage_ligne;
    }
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne; // ligne déplacée
 

Hors ligne

Pied de page des forums