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 :

PHPmailer : impossible de joindre un fichier


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut PHPmailer : impossible de joindre un fichier
    Salut à tous, mes excuses si je poste ce premier post dans la mauvaise catégorie
    Etant limité en php (je me sers essentiellement de 'echo' et include pour générer du html), et en l'absence de programmeur, je bloque sur un formulaire utilisant phpMailer.

    A un formulaire mail fonctionnel, on m'a demandé d'ajouter 2 champs input type "file", pour uploader des fichiers.

    Les données de ce formulaire sont contrôlées par un fichier javascript, qui envoie ensuite les données à un fichier mailer.php.
    Ce fichier php utilisant phpmailer, j'ai cherché depuis quelques jours tutos , exemples et topics qui pourraient m'aider, en vain... Le problème étant que toutes les données du formulaires sont transmises correctement, sauf les pièces jointes (à noter que le contenu des input type files est bien transmis au fichier mailer.php >> un echo me renverra par exemple "test.doc". )
    J'utilise les 2 lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mail->AddAttachment($post_cv);
    $mail->AddAttachment($post_motiv);
    Par contre, aucune trace de fichier joint à la réception du mail, et pourtant aucune erreur signalée par mailer.php non plus.

    Je ne suis pas sûr d'être clair, donc au besoin, je peux vous transmettre les fichiers, avant d'aller me pendre :

    Merci par avance de votre pitié pour un boulet de php

  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
    recevoir le contenu "caractère" d'un champs uploader ne veut pas dire que ce dernier est bien envoyé à ton serveur. tu peut montrer le code que tu utiliser pour réceptionner ton fichier uploadé?

  3. #3
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Salut Vil'Coyote

    côté html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="post_motiv" value="" onchange="check_extension(this.value);" class="file" /><br />
    côté javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var post_cv = document.forms['form'].elements['post_cv'].value ;
    data = "post_cv="+post_cv;
    côté php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $post_cv=htmlspecialchars($_POST['post_cv']);
    $mail->AddAttachment($post_cv);
    $mail->AddAttachment($post_motiv);
    Voilà pour ce qui concerne la transmission de la pièce jointe C.V.
    Je crois que je vois ce que tu veux dire par contenu "caractère". Ca viendrait donc d'un truc pas transmis entre javascript et php ?

    Merci à toi

  4. #4
    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
    ouep donc c'est bien ce qu'il me semble tu ne reçoit pas tes fichier. tu récupère le nom mais aucunement le fichier en tant que tel dans ton code php. tu devrais regarder le tuto.

    http://antoine-herault.developpez.co...ls/php/upload/

  5. #5
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    ben en fait d'après les tutos phpMailer, la fonction AddAttachment suffit :
    elle fait appel à une grosse fonction de la classe phpMailer qui doit s'occuper du traitement du fichier (cf. pièce jointe)

    Je vais tenter d'appliquer le tuto, mais est-ce que je risque pas d'avoir des conflits avec des fonctions déjà existantes dans cette classe phpMailer ?


    Edit : après essai, l'utilisation du script d'upload du tuto me renvoie une erreur :
    Echec de l'upload

    A part ça, le mail lui-même a l'air d'être bien envoyé... En fait je patauge de plus en plus
    Fichiers attachés Fichiers attachés

  6. #6
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    je poursuis donc mes tentatives...

    cette fois en remplaçant le fichier class.phpmailer.php par l'avant-dernière version, 5.1.

    Cette fois, une erreur un peu plus explciite peut-être concernant le problème d'upload :

    Fatal error : Uncaught exception 'phpmailerException' with message 'Could not access file: test.doc' in /var/www/######/mailer/class.phpmailer.php:1348
    Stack trace:
    #0 /var/www/######//mailer/mailto_candidatures.php(94): PHPMailer-&gt;AddAttachment('test.doc')
    #1 {main}
    thrown in <b>/var/www/######//mailer/class.phpmailer.php</b> on line <b>1348</b><br />
    Donc après vérification du phpinfo, le "upload_tmp_dir" est renseigné en tant que "/tmp"

    Je patauge toujours, mais l'erreur change...

  7. #7
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Alors effectivement, le fichier n'est pas uploadé...
    Il semblerait que le fichier javascript qui contrôle le formulaire intercepte les données.

    Le truc qui me rend fou, c'est que dans le fichier php,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = basename($_FILES['post_cv']['name']);
    est bien renseigné

    Mais si je fais un isset sur
    ...le isset est négatif !

    J'ai l'impression que le fichier javascript est la cause de la perte de données...

  8. #8
    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
    as tu essayé sans tes controle javscript histoire d'être sur ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Oui, et justement, l'erreur change :
    on passe à

    html5-cheat-sheet.pdf
    Warning: move_uploaded_file(/tmphtml5-cheat-sheet.pdf) [function.move-uploaded-file]: failed to open stream: Permission denied in /var/www/mailto_candidatures.php on line 60

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpzwyTeg' to '/tmphtml5-cheat-sheet.pdf' in /var/www/mailer/mailto_candidatures.php on line 60
    Echec de l'upload !Message envoyé!
    Donc apparemment, même si ça ne fonctionne pas, cette fois-ci les fichiers que je tente d'uploader sont bien reconnus en tant que fichiers.


    Edit : et pour précision, le mail arrive bien avec les fichiers joints, mais ils ont des noms du genre : phpTeyhz et sont illisibles.

    Ça voudrait dire qu'il y a un problème au niveau du javascript et au niveau du php...

  10. #10
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Le problème se trouve au niveau de ton formulaire qui n'envoi pas correctement les fichiers.

  11. #11
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Après avoir eu un entretien avec l'hébergeur, il semblerait qu'un problème existe au niveau du dossier /tmp et des autorisations. D'ailleurs, au moment de l'upload, l'erreur a changé :

    la fonction move_uploaded_file ne pose apparemment plus problème, mais j'ai ceci :

    Mailer Error: File Error: Could not open file: /tmp/phpscqc6Y
    Pour l'instant je laisse le javascript de côté pour être sûr que le mail est bien envoyé (merci Vil Coyote

    Edit : après changement du dossier cible à l'aide de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getcwd().DIRECTORY_SEPARATOR;
    Ca fonctionne !
    la partie php est donc ok.

    Retour donc à la partie javascript pour les contrôles du script

  12. #12
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    En fait, donc, j'en reviens au même :

    Un ami m'a dit que "l'upload était impossible en Ajax" (apparemment, le fichier javascript qui contrôle les données du formulaire, c'est de l'Ajax)
    et m'a conseillé un tuto :
    http://www.ajaxf1.com/tutorial/ajax-...-tutorial.html

    Après presque une journée de galère, je crois comprendre que ce tuto ne permet que d'afficher un gif pendant l'upload du fichier.
    Ce qui me ramène à l'erreur d'origine : ce fichier javascript empêche l'upload... La fonction move_uploaded_file renvoie à nouveau false.

    Existe-t-il un moyen d'envoyer les $_FILES directement au fichier php mailer, pendant que le fichier js se contente de contrôler les autres champs ?

    Ca paraît peut-être débile comme question, mais là, je ne sais plus dans quelle direction chercher.

  13. #13
    Candidat au Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    la suite des tests, selon les conseils d'un ami :

    J'ai essayé de placer un autre submit dans mon formulaire, destiné à uploader les fichiers avant l'envoi, en utilisant le système d'upload ajax mentionné dans mon post d'hier.

    Ca uploade bien !

    Le mail est bien envoyé !

    Par contre et bien évidemment, les pièces jointes ne sont pas jointes au mail...

Discussions similaires

  1. PhpMailer: Impossible de charger le fichier language
    Par moudjahidine dans le forum Langage
    Réponses: 11
    Dernier message: 03/10/2013, 11h54
  2. [phpmailer] Joindre un fichier
    Par afrodje dans le forum Langage
    Réponses: 6
    Dernier message: 26/11/2008, 13h15
  3. [PHPMailer] joindre un fichier image
    Par cutpeter56 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/05/2008, 14h23
  4. Impossible de joindre un fichier.
    Par sondo dans le forum Excel
    Réponses: 5
    Dernier message: 27/07/2005, 10h48
  5. Joindre un fichier en asp
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 16/09/2004, 09h44

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