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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Envois e-mail avec pieces jointe


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut Envois e-mail avec pieces jointe
    Bonjour à tous,

    je sollicite de votre part une aide concernant l'envoi d'email, avec pièces jointe.

    je m'explique, je souhaiterais permettre à un visiteur de mon site de m'envoyer des pièces jointes c'est-à-dire qu'il cliques sur un bouton, sélection sur son disque dur le fichier, puis m'envoie le fichier dans ma boîte e-mail, l'objectif et de pouvoir recevoir des pièces diverse sans être obligé de communiquer mon adresse e-mail.

    On peux imaginer un site de formation ou l'étudiant doit envoyer les fichiers exercices par e-mail à son correcteur.

    j'ai consulté sur Google, j'ai trouvé une tonne de réponses aucune d'elle ne fonctionne, notamment celles proposés avec la balise <input> avec l'attribut type=file, cette solution pourrais éventuellement fonctionner sur IE, mais pas sur d'autre navigateurs du à une faille de sécurité corrigée.

    Avez-vous une solution ou pouvez-vous me mettre sur une piste fonctionnelle merci de prendre en compte le fait que la balise ci-dessus ne retourne pas le chemin complet du fichier a envoyer sur tous les navigateurs

    merci à tous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour qu'un fichier passe du navigateur au serveur, je ne vois pas d'autre solution qu'un input-file mais je ne vois pas non plus ce qui te bloque avec cette methode ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut Envois de pieces jointe
    bonjour,

    Ce qui me gene c'est que cela ne fonctionne pas sur tous les navigateur par exemple firefox et autre, as tu un script fonctionnel sur ce type de navigateur

    merci de ta reponse

    Citation Envoyé par sabotage Voir le message
    Pour qu'un fichier passe du navigateur au serveur, je ne vois pas d'autre solution qu'un input-file mais je ne vois pas non plus ce qui te bloque avec cette methode ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    input file fonctionne evidemment avec firefox.

    pour l'envoi du mail :
    http://a-pellegrini.developpez.com/tutoriels/php/mail/

    dans ton cas le $file_name sera $_FILES['nom_du_champ']['tmp_name']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut
    Bonjour et merci pour ta réponse,

    j'ai bien l'envois d'un fichier qui se fait de taille = 0
    d'un nom de fichier bizaroid

    voicie le code source de mes deux pages de tests

    le fichier du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <FORM method="POST"   action="upload.php3" ENCTYPE="multipart/form-data">
     <INPUT type="file"   name="fichier">
     <INPUT type="submit" value="Envoyer">
    </FORM>

    le fichier upload
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
    // To
    //$to = 'truc@server.com';
    $to = 'mon-email ... ici';
     
    // Subject
    $subject = 'Test Mail avec pièces jointe';
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = 'From: Adrien Pellegrini <mail@server.com>'."\r\n";
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    $headers .= "\r\n";
     
    // Message
    $msg = 'This is a multipart/mixed message.'."\r\n\r\n";
     
    // Texte
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
    $msg .= 'Un message avec une pièce jointe.'."\r\n";
     
    // Pièce jointe
    // $file_name = 'image.jpg';
    $file_name = $_FILES['fichier']['tmp_name'];
     
    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";
    }
     
    // Fin
    $msg .= '--'.$boundary."\r\n";
     
    // Function mail()
    mail($to, $subject, $msg, $headers);
    ?>
    le fichier envoyer est un fichier de text de nom date_picker.js de 17ko

    voici ce que j'ai dans les variables

    $file_name : /mnt/167/sda/7/9/ic2v/phpZVj9sk
    $file_type : file
    $file_size : 17146

    le fichier recu dans boite email : mnt167sda79ic (0,0 Ko)

    Je me suis peux être trompé, ou oublié quelque chose, as tu une idée sur le pourquoi de ce comportement ?

    merci

    Citation Envoyé par sabotage Voir le message
    input file fonctionne evidemment avec firefox.

    pour l'envoi du mail :
    http://a-pellegrini.developpez.com/tutoriels/php/mail/

    dans ton cas le $file_name sera $_FILES['nom_du_champ']['tmp_name']

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ca sera un peu mieux comme ca pour le nom de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg .= 'Content-type:'.$file_type.';name='.$_FILES['fichier']['name']."\r\n";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. echec d'envoi de mail avec piece jointe
    Par thaundeadboss dans le forum Langage
    Réponses: 3
    Dernier message: 05/01/2010, 15h04
  2. Réponses: 4
    Dernier message: 02/08/2006, 10h38
  3. [oracle 9] Envoi de mail avec piece jointe
    Par tipote69 dans le forum Oracle
    Réponses: 2
    Dernier message: 01/03/2006, 15h01
  4. probleme d'envoi de mail avec pieces jointes
    Par tmryuga dans le forum ASP
    Réponses: 9
    Dernier message: 23/02/2006, 14h56
  5. Réponses: 5
    Dernier message: 12/12/2005, 08h52

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