Envois mail plusieurs fichier
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
14 avril 2017 à 19:33
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 21 avril 2017 à 19:55
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 21 avril 2017 à 19:55
A voir également:
- Envois mail plusieurs fichier
- Fichier rar - Guide
- Yahoo mail - Accueil - Mail
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
11 réponses
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
Modifié le 18 avril 2017 à 15:29
Modifié le 18 avril 2017 à 15:29
Bonjour,
Dis voir .. côté formulaire html .. tes "input" file ... sont bien nommés sous forme d'array ?
Sinon..normal qu'il n'en récupère qu'un.....
bien entendu ... côté php .. tu devras ensuite faire un foreach pour parcourir CHAQUE fichier
Dis voir .. côté formulaire html .. tes "input" file ... sont bien nommés sous forme d'array ?
input type = "file" name = "Fr_Photos[]" ..
Sinon..normal qu'il n'en récupère qu'un.....
bien entendu ... côté php .. tu devras ensuite faire un foreach pour parcourir CHAQUE fichier
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos){ foreach ($Fr_Photos as $fichier ){ $upload_file= $fichier['name']; $tmp_name =$fichier['tmp_name']; if (move_uploaded_file($tmp_name, $upload_file)) { $ext = explode(".", basename( $upload_file )); // .. etc... // .... le code de traitement à effectuer pour chaque fichier // ... } } }
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
19 avril 2017 à 12:13
19 avril 2017 à 12:13
Je viens de percuter que tu utilises UN champ INPUT multiple et non pas PLUSIEURS INPUT files ...
Donc testes ceci :
A adapter à ton besoin par la suite bien entendu...
Donc testes ceci :
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf'); $taille_maxi = 10485760; $nbr_max_file = 10; $erreur = ""; //na pas oublier de renseigner cette variable : $dirToUpload = "repertoire_ou_mettre_les_fichiers/"; if($Fr_Photos){ if (count($Fr_Photos['name']) > $nbr_max_file) { $erreur .= "<li>• Trop de fichiers uploadés</li>"; }else{ foreach ($Fr_Photos['name'] as $indice=>$upload_file ){ $tmp_name =$Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if(!in_array($extension, $extensions)){ $erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>"; }else{ if($taille > $taille_maxi){ $erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>"; }else{ if (move_uploaded_file($tmp_name, $dirToUpload . $upload_file)) { $attachement = chunk_split(base64_encode(file_get_contents($tmp_name))); $message.= 'Content-type:'.$upload_file['type'].';name='.$upload_file['name'].$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file['name'].$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; }else{ $erreur.="<li>• Erreur lors de l'upload </li>"; } } } } } }
A adapter à ton besoin par la suite bien entendu...
yg_be
Messages postés
23435
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2025
Ambassadeur
1 559
14 avril 2017 à 19:37
14 avril 2017 à 19:37
que se passe-t-il quand tu envoies plusieurs pièces jointes?
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
17 avril 2017 à 11:54
17 avril 2017 à 11:54
Bonjour yg_be,
Une seule s'envoie, la dernière sélectionnée...
Une seule s'envoie, la dernière sélectionnée...
yg_be
Messages postés
23435
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2025
1 559
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17 avril 2017 à 14:53
17 avril 2017 à 14:53
peux-tu montrer le code complet, et expliquer comment plusieurs sont sélectionnés?
à quoi servent les lignes 3 à 14?
à quoi servent les lignes 3 à 14?
yg_be
Messages postés
23435
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2025
Ambassadeur
1 559
14 avril 2017 à 19:49
14 avril 2017 à 19:49
c'est toi qui a écrit ce code? à quoi servent les lignes 3 à 14?
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 18 avril 2017 à 10:40
Modifié le 18 avril 2017 à 10:40
Pardon du retard de réponse, la ligne 3 à 14 imposait l'extension des fichiers et uploadais les fichiers sur le serveur. Mais je crois supprimer tout ça pour faire plus propre.
Lorsque j'ajoute des fichiers "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" et n'envoie que le "10"
C'est un
Lorsque j'ajoute des fichiers "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" et n'envoie que le "10"
C'est un
<input name="upload" id="upload" type="file" multiple>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
18 avril 2017 à 11:48
18 avril 2017 à 11:48
Voici tout mon code :
$upload_file = $_FILES['Fr_Photos']['name']; if (move_uploaded_file($_FILES['Fr_Photos']['tmp_name'], $upload_file)) {$ext = explode(".", basename($_FILES['Fr_Photos']['name'])); $PieceJointe = $upload_file; $EmailDesti = "Sujet du mail"; $LeSujet = utf8_decode($INSCRIPTION." de ".$data['Titre']); $LeMessageHTML = "<html><head><meta charset='utf-8'></head><body><div style='font-family: Futura;'>" .$TablO .$Libelle_01." : ".ucwords(strtolower($Fr_Nom_Prenoms))."<br>" .$Libelle_02." : ".strtolower($Fr_AdresseMail)."<br>" .$Libelle_03." : ".$Fr_Telephone."<br>" .$Libelle_04." : ".$Fr_Age."<br>" .$Libelle_05." : ".ucwords(strtolower($Fr_Location))."<br>" .$Libelle_30." : ".strtolower($Fr_Book)."<br>" .$Libelle_31." : ".strtolower($Fr_Facebook)."<br><br>" ."« ".ucfirst(strtolower($Fr_Motivation))." »" .$TablF ."</div></body></html>"; //=====On filtre les serveurs qui présentent des bogues. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){$passage_ligne = "\r\n";}else{$passage_ligne = "\n";} //=====Déclaration des messages au format texte et au format HTML. $message_html = $LeMessageHTML; //=====Lecture et mise en forme de la pièce jointe. $fichier = fopen($PieceJointe, "r"); $attachement = fread($fichier, filesize($PieceJointe)); $attachement = chunk_split(base64_encode($attachement)); fclose($fichier); //=====Création de la boundary. $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); //=====Définition du sujet. $sujet = $LeSujet; //=====Création du header de l'e-mail. $header = "From: ".$Fr_AdresseMail.$passage_ligne; $header.= "MIME-Version: 1.0".$passage_ligne; $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; //=====Création du message. $message = $passage_ligne."--".$boundary.$passage_ligne; $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; //=====Ajout du message au format HTML. $message.= "Content-Type: text/html; charset=\"UTF-8\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_html.$passage_ligne; //=====On ferme la boundary alternative. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne; $message.= $passage_ligne."--".$boundary.$passage_ligne; //=====Ajout de la pièce jointe. $message.= "Content-Type: application/pdf; name=".$upload_file.$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file.$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; //=====Envoi de l'e-mail. if(mail($EmailDesti,$sujet,$message,$header)){ $ok_mail="true"; }else{$erreur.='<div class="erreur-1"><div class="erreur-2"><div class="erreur-3"></div><div class="erreur-4">'.$MESSAGE_ERROR.'</div><div class="erreur-5">'.$ERREUR_ERROR_1.'</div></div></div>';}} }}
yg_be
Messages postés
23435
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2025
1 559
18 avril 2017 à 15:03
18 avril 2017 à 15:03
ton code ne travaille que sur un seul fichier.
peux-tu ajouter
peux-tu ajouter
print_r ($_FILES);au début de ton code, et partager ce que cela donne?
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
18 avril 2017 à 15:18
18 avril 2017 à 15:18
Array ( [Fr_Photos] => Array ( [name] => 10.txt [type] => text/plain [tmp_name] => /tmp/phpLCRR1a [error] => 0 [size] => 7 ) )
Voilà ce que j'ai comme retour...
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
18 avril 2017 à 17:15
18 avril 2017 à 17:15
J'ai modifié autant que je peux et voilà le résultat :
Je ne rencontre que des erreurs :\
Je ne rencontre que des erreurs :\
<?php $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf'); $taille_maxi = 10485760; $nbr_max_file = 10; $extension = strrchr($upload_file['name'], '.'); $taille = filesize($upload_file['tmp_name']); if(!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} if($taille>$taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";} if(count($upload_file['name']) > $nbr_max_file) {$erreur.="<li>• Trop de fichiers uploadés</li>";} // Création du message if($erreur==""){ foreach($_FILES as $upload_file){ $tmp_name = file_get_contents($upload_file['tmp_name']); $attachement = chunk_split(base64_encode($tmp_name)); $EmailDesti = LE_MAIL; $LeSujet = $data['Titre']; $LeMessageHTML = "<html></html>"; //=====On filtre les serveurs qui présentent des bogues. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){$passage_ligne = "\r\n";}else{$passage_ligne = "\n";} //=====Déclaration des messages au format texte et au format HTML. $message_html = $LeMessageHTML; //=====Lecture et mise en forme de la pièce jointe. foreach($_FILES as $upload_file){ $tmp_name = file_get_contents($upload_file['tmp_name']); $attachement = chunk_split(base64_encode($tmp_name)); //=====Création de la boundary. $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); //=====Définition du sujet. $sujet = $LeSujet; //=====Création du header de l'e-mail. $header = "From: ".$Fr_AdresseMail.$passage_ligne; $header.= "MIME-Version: 1.0".$passage_ligne; $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; //=====Création du message. $message = $passage_ligne."--".$boundary.$passage_ligne; $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; //=====Ajout du message au format HTML. $message.= "Content-Type: text/html; charset=\"UTF-8\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_html.$passage_ligne; //=====On ferme la boundary alternative. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne; $message.= $passage_ligne."--".$boundary.$passage_ligne; //=====Ajout de la pièce jointe. $message.= 'Content-type:'.$upload_file['type'].';name='.$upload_file['name'].$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file['name'].$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; } //=====Envoi de l'e-mail. if(mail($EmailDesti,$sujet,$message,$header)){ $ok_mail="true"; }else{$erreur.="<li>".$ERREUR_ERROR_1."</li>";}} } ?> <input name="Fr_Photos[]" id="Fr_Photos" type="file" multiple >
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
18 avril 2017 à 17:26
18 avril 2017 à 17:26
... tu n'as pas du regarder ma suggestion de code .... vu comment tu as écris le tien....
Par exemple .... où as tu vu que je faisais un
Moi j'ai écris :
Ensuite .. comment penses tu que :
puis se faire AVANT le foreach ????
Je te laisse corriger .... là ce n'est que de la logique.....
Par exemple .... où as tu vu que je faisais un
foreach($_FILES as $upload_file){
Moi j'ai écris :
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos){ foreach ($Fr_Photos as $fichier ){
Ensuite .. comment penses tu que :
$extension = strrchr($upload_file['name'], '.'); $taille = filesize($upload_file['tmp_name']); if(!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} if($taille>$taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";}
puis se faire AVANT le foreach ????
Je te laisse corriger .... là ce n'est que de la logique.....
yg_be
Messages postés
23435
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2025
1 559
18 avril 2017 à 17:46
18 avril 2017 à 17:46
peux-tu montrer ce que donne
print_r ($_FILES);après corrections?
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 19 avril 2017 à 11:31
Modifié le 19 avril 2017 à 11:31
Après plusieurs test, voici ce que j'ai fais mais j'ai encore des soucis :
Voici le print_r :
Et voici le code d'erreur :
$Fr_Photos = !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos){ foreach ($Fr_Photos as $upload_file ){ $upload_file = $upload_file['name']; $tmp_name = $upload_file['tmp_name']; $extension = strrchr($upload_file['name'], '.'); $taille = filesize($upload_file['tmp_name']); $tmp_myname = file_get_contents($upload_file['tmp_name']); $attachement = chunk_split(base64_encode($tmp_myname)); if (move_uploaded_file($tmp_name, $upload_file)) { if(!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} if($taille > $taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";} if(count($upload_file) > $nbr_max_file) {$erreur.="<li>• Trop de fichiers uploadés</li>";} $message.= 'Content-type:'.$upload_file['type'].';name='.$upload_file['name'].$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file['name'].$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; }}}
Voici le print_r :
Array ( [Fr_Photos] => Array ( [name] => Array ( [0] => 01.txt [1] => 02.txt ) [type] => Array ( [0] => text/plain [1] => text/plain ) [tmp_name] => Array ( [0] => /tmp/phpbhEjC0 [1] => /tmp/phpaNUCrD ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 7 [1] => 7 ) ) )
Et voici le code d'erreur :
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 79
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 83
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 79
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 83
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 79
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 83
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 79
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 83
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 79
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 83
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
19 avril 2017 à 10:54
19 avril 2017 à 10:54
....
Ne vois tu pas l'erreur ?
Encore une fois ... moi j'avais écrit :
Sais tu faire des copier/coller ? Oo
foreach ($Fr_Photos as $upload_file ){ $upload_file = $upload_file['name']; // ICI !!!! upload_file = upload_file.. bref.. tu écrase la variable par un morceau d'elle même ... on se retrouve dans les mondes parallèles ... ^^
Ne vois tu pas l'erreur ?
Encore une fois ... moi j'avais écrit :
foreach ($Fr_Photos as $fichier ){ $upload_file= $fichier['name']; $tmp_name =$fichier['tmp_name'];
Sais tu faire des copier/coller ? Oo
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
19 avril 2017 à 11:06
19 avril 2017 à 11:06
Comme ça ?
$Fr_Photos = !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos){ foreach ($Fr_Photos as $fichier){ $upload_type = $fichier['type']; $upload_file = $fichier['name']; $tmp_name = $fichier['tmp_name']; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); $tmp_myname = file_get_contents($tmp_name); $attachement = chunk_split(base64_encode($tmp_myname)); if (move_uploaded_file($tmp_name, $upload_file)) { if(!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} if($taille > $taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";} if(count($upload_file) > $nbr_max_file) {$erreur.="<li>• Trop de fichiers uploadés</li>";} $message.= 'Content-type:'.$upload_type.';name='.$upload_file.$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file.$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; }}}
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
19 avril 2017 à 11:24
19 avril 2017 à 11:24
ça me parait mieux....
Mais... est-ce que ça fonctionne chez toi ? A toi de nous le dire ...
Mais... est-ce que ça fonctionne chez toi ? A toi de nous le dire ...
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
Modifié le 19 avril 2017 à 11:26
Modifié le 19 avril 2017 à 11:26
Encore un petit couac je pense :
A mettre AVANT la boucle et à changer par:
if(count($upload_file) > $nbr_max_file)
A mettre AVANT la boucle et à changer par:
if(count($Fr_Photos) > $nbr_max_file)
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 19 avril 2017 à 11:30
Modifié le 19 avril 2017 à 11:30
Non ! Voilà pourquoi j'ai dû modifier et re-modifier sans arrêt depuis hier et mes copier/coller sont des catastrophes !
Voici l'erreur pour une seule pièce jointe :
Voici l'erreur pour une seule pièce jointe :
Notice: Undefined index: type in /home/serv/www/bonjour/inscription.php on line 76
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 77
Notice: Undefined index: tmp_name in /home/serv/www/bonjour/inscription.php on line 78
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 82
Notice: Undefined index: type in /home/serv/www/bonjour/inscription.php on line 76
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 77
Notice: Undefined index: tmp_name in /home/serv/www/bonjour/inscription.php on line 78
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 82
Notice: Undefined index: type in /home/serv/www/bonjour/inscription.php on line 76
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 77
Notice: Undefined index: tmp_name in /home/serv/www/bonjour/inscription.php on line 78
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 82
Notice: Undefined index: type in /home/serv/www/bonjour/inscription.php on line 76
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 77
Notice: Undefined index: tmp_name in /home/serv/www/bonjour/inscription.php on line 78
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 82
Notice: Undefined index: type in /home/serv/www/bonjour/inscription.php on line 76
Notice: Undefined index: name in /home/serv/www/bonjour/inscription.php on line 77
Notice: Undefined index: tmp_name in /home/serv/www/bonjour/inscription.php on line 78
Warning: file_get_contents(): Filename cannot be empty in /home/serv/www/bonjour/inscription.php on line 82
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
19 avril 2017 à 12:20
19 avril 2017 à 12:20
Non désolé je ne l'avais pas vu.
Voici le contenu du
Voici le contenu du
Le code HTML et PHP :
https://paste2.org/m1Usv7cy
L'erreur rencontrée dans les 2 cas:
Voici le contenu du
print_r ($_FILES);pour 1 fichier :
Array ( [Fr_Photos] => Array (
[name] => Array ( [0] => 01.txt ) [type] => Array ( [0] => text/plain )
[tmp_name] => Array ( [0] => /tmp/phpLvcDNk )
[error] => Array ( [0] => 0 )
[size] => Array ( [0] => 7 ) ) )
Voici le contenu du
print_r ($_FILES);pour 2 fichiers :
Array ( [Fr_Photos] => Array (
[name] => Array ( [0] => 01.txt [1] => 02.txt )
[type] => Array ( [0] => text/plain [1] => text/plain )
[tmp_name] => Array ( [0] => /tmp/phpXBOUcn [1] => /tmp/phpMKQcCp )
[error] => Array ( [0] => 0 [1] => 0 )
[size] => Array ( [0] => 7 [1] => 7 ) ) )
Le code HTML et PHP :
https://paste2.org/m1Usv7cy
L'erreur rencontrée dans les 2 cas:
Notice: Undefined variable: extension in /home/serveur/www/bonjour/inscription.php on line 73
Notice: Undefined variable: taille in /home/serveur/www/bonjour/inscription.php on line 74
Notice: Undefined index: type in /home/serveur/www/bonjour/inscription.php on line 80
Notice: Undefined index: name in /home/serveur/www/bonjour/inscription.php on line 81
Notice: Undefined index: tmp_name in /home/serveur/www/bonjour/inscription.php on line 82
Warning: file_get_contents(): Filename cannot be empty in /home/serveur/www/bonjour/inscription.php on line 86
Notice: Undefined index: type in /home/serveur/www/bonjour/inscription.php on line 80
Notice: Undefined index: name in /home/serveur/www/bonjour/inscription.php on line 81
Notice: Undefined index: tmp_name in /home/serveur/www/bonjour/inscription.php on line 82
Warning: file_get_contents(): Filename cannot be empty in /home/serveur/www/bonjour/inscription.php on line 86
Notice: Undefined index: type in /home/serveur/www/bonjour/inscription.php on line 80
Notice: Undefined index: name in /home/serveur/www/bonjour/inscription.php on line 81
Notice: Undefined index: tmp_name in /home/serveur/www/bonjour/inscription.php on line 82
Warning: file_get_contents(): Filename cannot be empty in /home/serveur/www/bonjour/inscription.php on line 86
Notice: Undefined index: type in /home/serveur/www/bonjour/inscription.php on line 80
Notice: Undefined index: name in /home/serveur/www/bonjour/inscription.php on line 81
Notice: Undefined index: tmp_name in /home/serveur/www/bonjour/inscription.php on line 82
Warning: file_get_contents(): Filename cannot be empty in /home/serveur/www/bonjour/inscription.php on line 86
Notice: Undefined index: type in /home/serveur/www/bonjour/inscription.php on line 80
Notice: Undefined index: name in /home/serveur/www/bonjour/inscription.php on line 81
Notice: Undefined index: tmp_name in /home/serveur/www/bonjour/inscription.php on line 82
Warning: file_get_contents(): Filename cannot be empty in /home/serveur/www/bonjour/inscription.php on line 86
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
19 avril 2017 à 12:36
19 avril 2017 à 12:36
toujours en décalage par rapport aux messages ....
Donc 7 minutes plus tôt (que le tien...) .. j'ai écrit : https://forums.commentcamarche.net/forum/affich-34524529-envois-mail-plusieurs-fichier#23
Donc 7 minutes plus tôt (que le tien...) .. j'ai écrit : https://forums.commentcamarche.net/forum/affich-34524529-envois-mail-plusieurs-fichier#23
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 19 avril 2017 à 12:39
Modifié le 19 avril 2017 à 12:39
Les fichiers sont uploadés sur le serveur mais j'ai une seule pièce jointe nommée 0 de 194 octets...
Warning: file_get_contents(/tmp/phpfqFX5W): failed to open stream: No such file or directory in /home/serveur/www/bonjour/inscription.php on line 95
Warning: Illegal string offset 'type' in /home/serveur/www/bonjour/inscription.php on line 96
Warning: Illegal string offset 'name' in /home/serveur/www/bonjour/inscription.php on line 96
Warning: Illegal string offset 'name' in /home/serveur/www/bonjour/inscription.php on line 98
Warning: file_get_contents(/tmp/php6naVow): failed to open stream: No such file or directory in /home/serveur/www/bonjour/inscription.php on line 95
Warning: Illegal string offset 'type' in /home/serveur/www/bonjour/inscription.php on line 96
Warning: Illegal string offset 'name' in /home/serveur/www/bonjour/inscription.php on line 96
Warning: Illegal string offset 'name' in /home/serveur/www/bonjour/inscription.php on line 98
Array ( [Fr_Photos] => Array ( [name] => Array ( [0] => 01.txt [1] => 02.txt ) [type] => Array ( [0] => text/plain [1] => text/plain ) [tmp_name] => Array ( [0] => /tmp/phpfqFX5W [1] => /tmp/php6naVow ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 7 [1] => 7 ) ) )
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
19 avril 2017 à 12:38
19 avril 2017 à 12:38
remplaces le tmpname par :
par :
$dirToUpload . $upload_file
$attachement = chunk_split(base64_encode(file_get_contents($tmp_name)));
par :
$attachement = chunk_split(base64_encode(file_get_contents($dirToUpload . $upload_file)));
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
19 avril 2017 à 13:11
19 avril 2017 à 13:11
Je n'ai plus de messages d'erreurs, les fichiers ne sont pas uploadés dans le dossier et je reçois une pièce jointe
Voici le code adapté :
ATT00001.txt (240 o)
Voici le code adapté :
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; $extensions = array('.jpg','.jpeg','.png','.bmp','.pdf','.txt'); $taille_maxi = 10485760; $nbr_max_file = 10; $erreur = ""; //na pas oublier de renseigner cette variable : $dirToUpload = "photos/"; if($Fr_Photos){ if (count($Fr_Photos['name']) > $nbr_max_file) { $erreur .= "<li>• Trop de fichiers uploadés</li>"; }else{ foreach ($Fr_Photos['name'] as $indice=>$upload_file ){ $tmp_name = $Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if(!in_array($extension, $extensions)){ $erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>"; }else{ if($taille > $taille_maxi){ $erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>"; }else{ if (move_uploaded_file($dirToUpload.$upload_file, $dirToUpload.$upload_file)) { $attachement = chunk_split(base64_encode(file_get_contents($dirToUpload.$upload_file))); $message.= 'Content-type:'.$upload_file['type'].';name='.$upload_file['name'].$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file['name'].$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; }else{ $erreur.="<li>• Erreur lors de l'upload</li>"; } } } } } }
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
19 avril 2017 à 14:08
19 avril 2017 à 14:08
Qu'est-ce que c'est que ça :
.... le "tmp_name" ... il ne fallait le remplacer QUE dans la ligne qui provoquait l'erreur ... celle que je t'avais mis .....
celle la :
que je te disais de remplacer comme ceci :
et puis .... dans les lignes suivantes :
... faudrait pt'être remplacer les $upload_file['type']. et $upload_file['name']. ... par les variables que nous avons initié avant ... à savoir respectivement $upload_type et $upload_file ....
Il faut vraiment que tu apprennes à te relire et pas juste à "coller" des bouts de code.... mais tu dois t’astreindre à essayer de les comprendre !!!!
if (move_uploaded_file($dirToUpload.$upload_file, $dirToUpload.$upload_file)) {
.... le "tmp_name" ... il ne fallait le remplacer QUE dans la ligne qui provoquait l'erreur ... celle que je t'avais mis .....
celle la :
$attachement = chunk_split(base64_encode(file_get_contents($tmp_name)));
que je te disais de remplacer comme ceci :
$attachement = chunk_split(base64_encode(file_get_contents($dirToUpload . $upload_file)));
et puis .... dans les lignes suivantes :
$message.= 'Content-type:'.$upload_file['type'].';name='.$upload_file['name'].$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file['name'].$passage_ligne;
... faudrait pt'être remplacer les $upload_file['type']. et $upload_file['name']. ... par les variables que nous avons initié avant ... à savoir respectivement $upload_type et $upload_file ....
Il faut vraiment que tu apprennes à te relire et pas juste à "coller" des bouts de code.... mais tu dois t’astreindre à essayer de les comprendre !!!!
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
19 avril 2017 à 14:52
19 avril 2017 à 14:52
Les corrections sont faites. L'upload des fichiers s'exécute avec succès dans le dossier, aucun message d'erreur ne s'affiche, le mail est cependant reçu avec une seule pièce jointe.
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf','.txt'); $taille_maxi = 10485760; $nbr_max_file = 10; $erreur = ""; //na pas oublier de renseigner cette variable : $dirToUpload = "upload/"; if($Fr_Photos){ if (count($Fr_Photos['name']) > $nbr_max_file) { $erreur .= "<li>• Trop de fichiers uploadés</li>"; }else{ foreach ($Fr_Photos['name'] as $indice=>$upload_file ){ $tmp_name =$Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if(!in_array($extension, $extensions)){ $erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>"; }else{ if($taille > $taille_maxi){ $erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>"; }else{ if (move_uploaded_file($tmp_name, $dirToUpload . $upload_file)) { $attachement = chunk_split(base64_encode(file_get_contents($dirToUpload . $upload_file))); $message.= 'Content-type:'.$upload_type.';name='.$upload_file.$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=".$upload_file.$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; }else{ $erreur.="<li>• Erreur lors de l'upload </li>"; } } } } } }
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
19 avril 2017 à 15:02
19 avril 2017 à 15:02
Avant l'envoi du mail fais donc un echo de tes variables pour voir ce qu'elles contiennent exactement !
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 20 avril 2017 à 12:38
Modifié le 20 avril 2017 à 12:38
J'ai adapté autant que possible et voilà ce qui en sort.
Ce qui fonctionne :
- Je ne reçois aucune erreur.
- Le mail est maintenant en HTML.
- Je reçois toutes les pièces jointes.
- L'encodage passe parfaitement.
Ce qui ne va pas :
- J'ai une pièce jointe supplémentaire AT00001.txt (240 o)
functions.php :
inscription.php :
Ce qui fonctionne :
- Je ne reçois aucune erreur.
- Le mail est maintenant en HTML.
- Je reçois toutes les pièces jointes.
- L'encodage passe parfaitement.
Ce qui ne va pas :
- J'ai une pièce jointe supplémentaire AT00001.txt (240 o)
functions.php :
function sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message="",$attach = NULL){ $header = "From: $Fr_AdresseMail"; // boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // header for attachment $header.= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\""; // multipart boundary $message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/html; charset=\"UTF-8\"\n"."Content-Transfer-Encoding: 8bit\n\n".$message."\n\n"; $message.= "--{$mime_boundary}\n"; //Ajout des pieces jointes si il y en a if(!empty($attach)){ foreach($attach as $pj){ $file = fopen($pj,"rb"); $data = fread($file,filesize($pj)); fclose($file); $data = chunk_split(base64_encode($data)); $fileName = basename($pj); $message.= "Content-Type: {\"application/octet-stream\"};\n"." name=\"$pj\"\n"."Content-Disposition: attachment;\n"." filename=\"$fileName\"\n"."Content-Transfer-Encoding: base64\n\n".$data."\n\n"; $message.= "--{$mime_boundary}\n"; } } // send if(mail($EmailDesti, $sujet, $message, $header)) {return true;} else {return false;} }
inscription.php :
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/functions.php"); ?> <?php if(isset($_POST['Envoyer'])){$erreur=""; // Nettoyage des entrées while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} // Création du message if($erreur==""){ if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){echo "\r\n";} else {echo "\n";} $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf','.txt'); $taille_maxi = 10485760; $nbr_max_file = 10; $erreur = ""; $dirToUpload = "upload/"; $filesToAttach = array(); $header.= "From: ".$Fr_AdresseMail; $EmailDesti = MAIL_PERSONNEL; $sujet = utf8_decode($CASTING_INSCRIPTION." de ".$data['Titre']); $message = "<html><head><meta charset='utf-8'><style>body{font-family:Calibri,'Futura';}</style></head><body>" .$TablO .$Libelle_01." : ".ucwords(strtolower($Fr_Nom_Prenoms))."<br>" .$Libelle_02." : ".strtolower($Fr_AdresseMail) .$TablF ."</body></html>"; //=====Ajout de la pièce jointe. $Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos){ if (count($Fr_Photos['name']) > $nbr_max_file) { $erreur .= "<li>• Trop de fichiers uploadés</li>"; }else{ foreach ($Fr_Photos['name'] as $indice=>$upload_file ){ $tmp_name =$Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if(!in_array($extension, $extensions)){ $erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>"; }else{ if($taille > $taille_maxi){ $erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>"; }else{ if (move_uploaded_file($tmp_name, $dirToUpload . $upload_file)) { $filesToAttach[] = $dirToUpload . $upload_file; }else{ $erreur.="<li>• Erreur lors de l'upload </li>"; } } } } } } if(sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message,$filesToAttach)){$ok_mail="true";}else{$erreur.="<li>".$ERREUR_ERROR."</li>";}} } ?> <?php if($ok_mail=="true"){ echo $MESSAGE_VALID; }else{ ?> <form action="<?php echo $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="Form"> <?php if($erreur){ echo $MESSAGE_ERROR; } ?> <input name="Fr_Photos[]" id="Fr_Photos" type="file" multiple > <button name="Envoyer" type="submit">Envoyer</button> </form> <?php }; ?>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
20 avril 2017 à 12:17
20 avril 2017 à 12:17
Je fais encore quelques modifications... je te reviens bien vite !
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
20 avril 2017 à 12:39
20 avril 2017 à 12:39
Voilà, il ne reste plus que la pièce jointe supplémentaire :
https://forums.commentcamarche.net/forum/affich-34524529-envois-mail-plusieurs-fichier#39
https://forums.commentcamarche.net/forum/affich-34524529-envois-mail-plusieurs-fichier#39
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
20 avril 2017 à 14:03
20 avril 2017 à 14:03
Je constate aussi un autre soucis :
Si la taille du fichier est > à
Si la taille du fichier est > à
$tailleet/ou le nombre de fichier dépasse
$nbr_max_file, le mail part tout de même mais avec ATT00001.txt
$Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos) { if (count($Fr_Photos['name']) > $nbr_max_file) {$erreur .= "<li>• Trop de fichiers uploadés</li>";}else { foreach ($Fr_Photos['name'] as $indice=>$upload_file ) { $tmp_name = $Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if(!in_array($extension, $extensions)){$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} else { if($taille > $taille_maxi) { $erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>"; } else { if (move_uploaded_file($tmp_name, $dirToUpload . $upload_file)) {$filesToAttach[] = $dirToUpload . $upload_file;}else{$erreur.="<li>• Erreur lors de l'upload </li>";} } } } } }
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
20 avril 2017 à 17:05
20 avril 2017 à 17:05
Je constate aussi un autre soucis :
Si la taille du fichier est > à
$taille
et/ou le nombre de fichier dépasse
$nbr_max_file
, le mail part tout de même
... ben.. tu dois vérifier.. avant l'envoie du mail.. qu'il n'y a aucune erreur....
jordane45
Messages postés
38391
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2025
4 731
20 avril 2017 à 17:06
20 avril 2017 à 17:06
Pour la pj supplémentaire ... une simple recherche sur le net te donne :
https://exchange-server-guide.blogspot.com/2015/11/att00001.txt-file-fix-email-attachment-issue.html
https://exchange-server-guide.blogspot.com/2015/11/att00001.txt-file-fix-email-attachment-issue.html
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
20 avril 2017 à 17:36
20 avril 2017 à 17:36
Il ne me reste plus que le fichier ATT00001.txt a gérer. J'ai lu l'article et je continue a chercher, j'ai essayé d'ajouter des \n ou des -- mais bon, je penses que la pièce jointe est déjà en fin de message... je cherche toujours !
Voici enfin un code qui fonctionne (sauf erreur de ma part) :
Voici enfin un code qui fonctionne (sauf erreur de ma part) :
<?php function sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message="",$attach = NULL){ $header = "From: $Fr_AdresseMail"; $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $header.= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\""; $message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/html; charset=\"UTF-8\"\n"."Content-Transfer-Encoding: 8bit\n\n".$message."\n\n"; $message.= "--{$mime_boundary}\n"; if(!empty($attach)){ foreach($attach as $pj){ $file = fopen($pj,"rb"); $data = fread($file,filesize($pj)); fclose($file); $data = chunk_split(base64_encode($data)); $fileName = basename($pj); $message.= "Content-Type: {\"application/octet-stream\"};\n"." name=\"$pj\"\n"."Content-Disposition: attachment;\n"." filename=\"$fileName\"\n"."Content-Transfer-Encoding: base64\n\n".$data."\n\n"; $message.= "--{$mime_boundary}\n"; } } if(mail($EmailDesti, $sujet, $message, $header)) {return true;} else {return false;} } //#################################################### if(isset($_POST['Envoyer'])){$erreur=""; while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf','.txt'); $taille_maxi = 1024; $nbr_max_file = 10; $erreur = ""; $dirToUpload = "upload/"; $filesToAttach = array(); $Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos) { if (count($Fr_Photos['name']) > $nbr_max_file) {$erreur.= "<li>• Trop de fichiers uploadés</li>";} else { foreach ($Fr_Photos['name'] as $indice=>$upload_file ) { $tmp_name = $Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if (!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} else { if ($taille > $taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";} else { if (!move_uploaded_file($tmp_name, $dirToUpload.$upload_file)) {$erreur.="<li>• Erreur lors de l'upload </li>";} else {$filesToAttach[] = $dirToUpload.$upload_file;}}} } } } if($erreur==""){ if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){echo "\r\n";} else {echo "\n";} $header = "From: ".$Fr_AdresseMail; $EmailDesti = MAIL_PERSONNEL; $sujet = utf8_decode($data['Titre']); $message = "<html><head><meta charset='utf-8'><style>body{font-family:Calibri,'Futura';}</style></head><body>".$TablO .$Libelle_01." : ".ucwords(strtolower($Fr_Nom_Prenoms))."<br>" .$Libelle_02." : ".strtolower($Fr_AdresseMail)."<br>" .$Libelle_03." : ".$Fr_Telephone."<br>" .$Libelle_04." : ".$Fr_Age."<br>" .$Libelle_05." : ".ucwords(strtolower($Fr_Location))."<br>" .$Libelle_30." : ".strtolower($Fr_Book)."<br>" .$Libelle_31." : ".strtolower($Fr_Facebook)."<br><br>" ."« ".ucfirst(strtolower($Fr_Motivation))." »" .$TablF."</body></html>"; if(sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message,$filesToAttach)){$ok_mail="true";}else{$erreur.="<li>".$ERREUR_ERROR."</li>";}} } opendir('upload');$handle=opendir('upload');while (false !== ($fichier = readdir($handle)))@unlink('upload/'.$fichier); ?> <?php if($ok_mail=="true"){ echo $MESSAGE_VALID; }else{ ?> <form action="<?php echo $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="Form"> <?php if($erreur){ echo $MESSAGE_ERROR; } ?> <input name="Fr_Photos[]" id="Fr_Photos" type="file" multiple > <button name="Envoyer" type="submit">Envoyer</button> </form> <?php } ?>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
21 avril 2017 à 19:55
21 avril 2017 à 19:55
Version finale, tout fonctionne parfaitement !
Merci à toi Jordane pour ton temps et ta précieuse aide.
Merci à toi Jordane pour ton temps et ta précieuse aide.
<?php function sendEmail($EmailDesti, $Fr_AdresseMail, $sujet, $message = "", $attach = NULL) { $header = "From: $Fr_AdresseMail"; $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $header.= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\""; $message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/html; charset=\"UTF-8\"\n"."Content-Transfer-Encoding: 8bit\n\n".$message."\n"; if (!empty($attach)) { foreach($attach as $indice=>$pj) { $file = fopen($pj, "rb"); $data = fread($file, filesize($pj)); fclose($file); $data = chunk_split(base64_encode($data)); $fileName = basename($pj); $message.= "--{$mime_boundary}\n"; $message.= "Content-Type: {\"application/octet-stream\"};\n"." name=\"$pj\"\n"."Content-Disposition: attachment;\n"." filename=\"$fileName\"\n"."Content-Transfer-Encoding: base64\n\n".$data."\n"; } } $message.= "--{$mime_boundary}--\n"; return mail($EmailDesti, $sujet, $message, $header); } ?> <?php if(isset($_POST['Envoyer'])){$erreur=""; // Nettoyage des entrées while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);} else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}} $extensions = array('.jpg', '.jpeg','.png','.bmp','.pdf'); $taille_maxi = 10485760; $nbr_max_file = 10; $erreur = ""; $dirToUpload = "upload/"; $filesToAttach = array(); $Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL; if($Fr_Photos) { if (count($Fr_Photos['name']) > $nbr_max_file) {$erreur.= "<li>• Trop de fichiers uploadés</li>";} else { foreach ($Fr_Photos['name'] as $indice=>$upload_file ) { $tmp_name = $Fr_Photos['tmp_name'][$indice]; $upload_type = $Fr_Photos['type'][$indice]; $extension = strrchr($upload_file, '.'); $taille = filesize($tmp_name); if (!in_array($extension, $extensions)) {$erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";} else { if ($taille > $taille_maxi) {$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";} else { if (!move_uploaded_file($tmp_name, $dirToUpload.$upload_file)) {$erreur.="<li>• Erreur lors de l'upload </li>";} else {$filesToAttach[] = $dirToUpload.$upload_file;}}} } } } // Création du message if($erreur==""){ if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){echo "\r\n";} else {echo "\n";} $header = "From: ".$Fr_AdresseMail; $EmailDesti = MAIL_PERSONNEL; $sujet = utf8_decode($data['Titre']); $message = "<html><head><meta charset='utf-8'><style>body{font-family:Calibri,'Futura';}</style></head><body>".$TablO .$Libelle_01." : ".ucwords(strtolower($Fr_Nom_Prenoms))."<br>" .$Libelle_02." : ".strtolower($Fr_AdresseMail) .$TablF."</body></html>"; if(sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message,$filesToAttach)){$ok_mail="true";}else{$erreur.="<li>".$ERREUR_ERROR_1."</li>";}} opendir('upload');$handle=opendir('upload');while (false !== ($fichier = readdir($handle)))@unlink('upload/'.$fichier); ?> <?php if($ok_mail=="true"){ echo $MESSAGE_VALID; }else{ ?> <form action="<?php echo $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="Form"> <?php if($erreur){ echo $MESSAGE_ERROR; } ?> <input name="Fr_Photos[]" id="Fr_Photos" type="file" multiple > <button name="Envoyer" type="submit">Envoyer</button> </form> <?php } ?>