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 :

PHP Mail() + envoi pièce jointe, Content-Type [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut PHP Mail() + envoi pièce jointe, Content-Type
    Bonsoir, je ne suis pas sûr d'être dans la bonne section si ce n'est pas le cas je m'en excuse.

    Ma question est la suivante : lors de l'envoi d'un mail avec pièce jointe, avec la fonction mail(), que faut-il renseigner pour l'attribut Content-Type, ou "comment" le renseigner, lorsque la pièce jointe est de type indéterminé à l'avance ? Ca peut être un document word, un fichier texte, une image, un pdf, un fichier de données .... donc je ne peux pas préciser image/jpg ou application/msword ce genre de choses étant donné que ça peut être autre chose aussi ...

    Merci d'éclairer ma lanterne

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Une petite recherche t'aurais permis de tomber sur un tuto sur Developpez :

    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
    if (file_exists($file_name))
    {
    	$file_type = filetype($file_name);
    	$file_size = filesize($file_name);
     
    	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
    	$content = fread($handle, $file_size);
    	$content = chunk_split(base64_encode($content));
    	$f = fclose($handle);
     
    	$msg .= '--'.$boundary."\r\n";
    	$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msg .= 'Content-transfer-encoding:base64'."\r\n";
    	$msg .= $content."\r\n";
    }
    Lien vers le tuto complet.

    En espérant que ça soit bien ça

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    En effet c'est bien ça ; je vais tester ce bout de code pour lequel je te remercie, mais c'est bien ça que je cherchais.

    Pour la recherche oui mea culpa, mais à force d'avoir farfouillé sur le net et trouvé que des exemples où on donne les différents types possibles sans la version "dynamique" telle que tu l'as mise, et bien je n'ai pas tellement eu la patience.

    Merci encore, je taggerai Résolu si ça fonctionne ;-)

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Bon, autre souci :

    Depuis WinDev j'ai un formulaire qui doit permettre d'envoyer un mail ainsi qu'une pièce jointe.

    Pour se faire j'envoie le formulaire WinDev à un script php qui se trouve sur un serveur distant. Le problème réside au niveau du fichier à envoyer : je charge le contenu binaire du fichier que j'envoie à mon script en tant que paramètre "PieceJointe" du formulaire par la méthode POST. Or, je n'arrive pas à récupérer ce "flux" dans mon script php. L'idée, c'est de récupérer le flux (donc le contenu du fichier), et de le recréer sur le serveur distant en l'appelant par exemple "temp.extensiondelapiecejointe". Mais je n'arrive pas à faire ça.

    Dans l'idée j'ai fait quelque chose comme ça

    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
     
    if (isset($_POST['PieceJointe']))
    {
        $avecpj = true; 
        $fichier = $_POST['PieceJointe'];
     
        //Enregistrement du fichier passé en paramètre sur le disque
        $fp = fopen("temp.jpg","w+"); // Pour l'enregistrer en tant que temp.jpg
        $handle = fopen($fichier, 'rb');
        $file_size = filesize($fichier);
        $content = fread($handle, $file_size);   
        fputs($fp,$content);
        fclose($fp);
        fclose($handle);
    }

    Mais ça ne fonctionne absolument pas .....

    Quelqu'un aurait-il une idée ? j'ai testé d'autres fonctions, le file_gets_content(), le $_FILES['PieceJointe']['name'], etc. mais ça ne marche pas mieux.

    Merci..

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Bon j'ai trouvé ; pour ceux qui seraient dans le même cas je mets le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (isset($_FILES['Fichier']))
      {
        $avecpj = true; 
     
        $tmp_name=$_FILES['Fichier']['tmp_name']; 
        $name=$_FILES['Fichier']['name']; 
        $size=$_FILES['Fichier']['size']; 
        $type=$_FILES['Fichier']['type']; 
        $erreur=$_FILES['Fichier']['error']; 
     
        $uploadpath=""; 
        move_uploaded_file($tmp_name,$uploadpath.$name);
      }
    Voilà avec ceci le fichier passé en paramètre tel quel (on ne passe pas le flux du fichier mais bien le fichier lui-même, en Windev HTTPAjouteFichier() et en HTML <input type="file" ..> avec un <form enctype="multipart/form-data" ...>), il se retrouve copié en l'occurrence à la racine du serveur afin de pouvoir l'inclure en pièce jointe via les boundaries.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Perso je trouve le tuto de developpez.com un peu limite, certains morceaux de codes ne sont pas super complet, et comportent des petites erreurs par endroit. Après c'est vrai qu'il répertorie un peu tout les cas de figures et grâce à ce tuto j'ai pu tout de meme avancer dans mon travail.
    Voici un article avec un code qui fonctionne à 100% pour moi :
    http://jv-web.blogspot.fr/2013/08/tu...ce-jointe.html

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

Discussions similaires

  1. [Javamail] Lecture pièce jointe, content-type: Application/octet-stream
    Par rtsKyo dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 20/06/2013, 17h56
  2. [PHP 4] PHP Mail() + envoi pièce jointe VIDE
    Par Thanor dans le forum Langage
    Réponses: 1
    Dernier message: 19/04/2012, 10h36
  3. [Forum] Envoi piéce jointe via un mail en php
    Par forzaakz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 04/01/2012, 11h25
  4. [Mail] Cherche script PHP mail avec pièce jointe
    Par malabarbe dans le forum Langage
    Réponses: 8
    Dernier message: 17/06/2008, 12h02
  5. [VB]Bp envoie mail avec piéce jointe
    Par jm1213 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/02/2006, 20h55

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