IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème pour faire fonctionner un formulaire mail() avec piece jointe


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 19
    Points : 4
    Points
    4
    Par défaut problème pour faire fonctionner un formulaire mail() avec piece jointe
    Bonjour je suis débutant en php et voila ce qui m'amène ..J'ai un site pour une association de pêche hébergé chez Alwaysdata qui comporte un formulaire mail() de contact et jusqu'à maintenant les photos étaient reçues par la fonction move_uploaded_file mais ça pose un problème vu qu"elles ne sont pas dans le mail mais dans un dossier "image_upload" et que bon nombre d'internautes oublient de les renommer a leur noms ..du coup on ne sait plus a qui elles appartiennent j'ai donc décidé d'écrire un script qui envoie les photos directement dans le mail ..Il serait plus facile d'utiliser une base de donnée mais voila les membres du bureau de l'association ne savent pas comment aller dedans et j'ai eu beau leur expliquer j'ai du supprimer les BDD ..

    J'ai trouvé un script qui fonctionne si on met directement l'URL de la photo dans les "" de la variable $fichier mais qui refuse de la charger si on passe par le formulaire html je mets un copié collé de la page html partie concernée au pièce jointe et celle de la partie php si je passe par le formulaire html ça me dit que la partie $sFileAdd du script est vide alors je n'y comprend plus rien j'ai essayé $_POST|'fichier']; et $_FILES mais rien n'y fait et je n'y comprend plus rien ..
    Pourriez vous m'aider SVP ..?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $fichier="$_FILES['fichier'];
     
                      $fichier="";     //( ça c'est moi qui ai rajouté et si je mets l'URL dedans la photo est envoyée )
     
    $message .= "--=c=h=a=m=p=a=l=u=\r\n"; 
    $message .= "Content-Type: application/octet-stream; "; 
    $message .= "name=\"$fichier\"\r\n";                     
    $message .= "Content-Transfer-Encoding: base64\r\n"; 
    $message .= "Content-Disposition: attachment; "; 
    $message .= "filename=\"$fichier\"\r\n";                 
    $message .= "$fichier\r\n";             
     
    // lecture du fichier en pièce jointe 
    $sFileAdd = file_get_contents("$fichier"); 
                   //ICI aussi
     
     
    // encodage et découpage des données 
    $sFileAdd = chunk_split(base64_encode($sFileAdd)); 
     
    // pièce jointe de la partie (intégration dans le message) 
    $message .= "$sFileAdd\r\n"; 
    $message .= "\r\n";             // ligne vide 
     
    // Délimiteur de fin du message. 
    $message .= "--=c=h=a=m=p=a=l=u=--\r\n"; 
     
    // Envoi. 
    $bEnvoie = mail($destinataires,$objet,$message,$entetes,$fichier); 
     
    ?>
    la partie html du formulaire pièce jointe:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form id="form" enctype="multipart/form-data" action="piecejointe.php" method="post"> 
    	    <input type="hidden" name="max_file_size" value="1000000"> 
    	   Envoyer : <input name="fichier" type="file"> 
    <br/>
    	    <input type="submit" value="Envoyer le fichier">

    Et ce n'est pas parce que les photos sont trop lourdes car ce sont majoritairement des photos d'identité le 1000000 c'est moi qui l'ai mis pour m'assurer que ce n'était pas la cause


    ______________________________________________________________________

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    il est normal de devoir préciser l'url.
    l'envoi du mail ne se fait pas depuis le formulaire mais depuis ton script php, donc depuis ton serveur web.
    Pour mettre une pièce jointe au mail il faut uploader l'image sur le serveur dans un répertoire temporaire et de là envoyer l'email avec l'image en format objet .
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Bonjour c'est tout a fait ça j'essaie en local sous Xampp les images sont dans mon serveur et si je les écrit direct sans passer par une variable ça fonctionne mais je ne sais pas comment il faut faire pour que la fonction file_get_content() dans la ligne $sFileAdd = file_get_contents("$fichier"); charge la variable $fichier car c'est la ou ça coince autrement dit je ne sais pas comment faire fonctionner des variables en les mettant dans des fonction ?
    Si quelqu'un sait ça me dépannerait bien , car ça fait un moment que j'essaie et l'envoi en local par le serveur SMTP pour essayer est super long !

  4. #4
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2016
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Bonjour résolu simplement en donnant les sacrosaintes permissions au fichier ça c'est Linux depuis les heures et le temps je devrais y être habitué

    Ce script fonctionne parfaitement pour envoyer des pieces jointes et je vais le perfectionner pour qu'il charge des fichiers non contenus dans le serveur ce qui est le but recherché

    Merci pour les réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour faire fonctionner un EJB3
    Par Payton3IL dans le forum Java EE
    Réponses: 0
    Dernier message: 16/02/2012, 19h30
  2. Réponses: 2
    Dernier message: 24/01/2012, 11h25
  3. Réponses: 3
    Dernier message: 21/11/2011, 10h54
  4. Réponses: 6
    Dernier message: 07/05/2010, 10h48
  5. Problème pour faire fonctionner OpenVpn.
    Par pcsystemd dans le forum Administration système
    Réponses: 1
    Dernier message: 29/08/2007, 00h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo