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 :

Envoyer un mail avec plusieures pieces jointes <input type="file" name="attachment" data-input="true" multiple


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Envoyer un mail avec plusieures pieces jointes <input type="file" name="attachment" data-input="true" multiple
    Bonjour,

    J'ai 16 ans et j'apprends à coder en php depuis 6 mois.
    En bidouillant plusieurs codes, j'arrive à envoyer un mail avec un seul attachment.
    Mais quand j'en met plusieurs avec <input type="file" name="attachment" data-input="true" multiple>, je reçois toujours le premier.
    J'essaie d'ajouter un foreach dans mons script PHP du mailhandler pour les récupérer mais ça bug.
    Je bloque
    Si quelqu'un pouvait m'aider. Merci bcp
    Michel

    le lien: http://www.everybodyisadj.be/testphp/cv.html
    j'ai mis aussi les fichier attachés, cv.html, mailhandler.php

    Code html : 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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <form id="contact-form" class='contact-form'>
                        <div class="contact-form-loader"></div>
                        <fieldset>
                            <label class="name">
                                <input type="text" name="name" placeholder="Nom" value=""
                                       data-constraints="@Required @JustLetters"/>
     
                                <span class="empty-message">*Ce champ est requis.</span>
                                <span class="error-message">*Ce nom n'est pas valide</span>
                            </label>
     
                            <label class="email">
                                <input type="text" name="email" placeholder="Email" value=""
                                       data-constraints="@Required @Email"/>
     
                                <span class="empty-message">*Ce champ est requis.</span>
                                <span class="error-message">*Cet email n'est pas valide.</span>
                            </label>
     
                            <label class="phone">
                                <input type="text" name="phone" placeholder="Téléphone" value=""
                                       data-constraints="@JustNumbers"/>
     
                                <span class="empty-message">*Ce champ est requis.</span>
                                <span class="error-message">*Ce téléphone n'est pas valide.</span>
                            </label>
     
                            <label class="message">
                                    <textarea name="message" placeholder="Votre Message"
                                              data-constraints='@Required @Length(min=20,max=999999)'></textarea>
     
                                <span class="empty-message">*Ce champ est requis.</span>
                                <span class="error-message">*Le message est trop court.</span>
                            </label>
     
    						<labe1> Votre CV (doc, docx, txt, pdf, zip, rar)</labe1>
    						<label class="message">
     
    							<input type="file" name="attachment" data-input="true" multiple>
    							<span class="empty-message">*Ce champ est requis.</span>
    						</label>
     
    						<!--<label1> Votre lettre de motivation </label1>
    						<label class="message">
     
    							<input type="file" name="attachment" data-input="true" mutiple="multiple">
    							<span class="empty-message">*Ce champ est requis.</span>
    						</label>
     
    						<label1> Autre document </label1>
    						<label class="message">
     
    							<input type="file" name="attachment" data-input="true" >
    							<span class="empty-message">*Ce champ est requis.</span>
    						</label>-->
     
                            <div class="btn-wr">
                                <a class="btn" href="#" data-type="submit">Envoyer</a>
                            </div>
                        </fieldset>
                        <div class="modal fade response-message">
                            <div class="modal-dialog">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <button type="button" class="close" data-dismiss="modal"
                                                aria-hidden="true">
                                            &times;
                                        </button>
                                        <h4 class="modal-title">Modal title</h4>
                                    </div>
                                    <div class="modal-body">
                                        Votre message nous as bien été envoyé! Nous vous recontacterons dans les plus brefs délais.
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>


    MAILHANDLER:

    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
    if(isset($_POST['name']) and $_POST['name'] != ''){$message_body .= '<p>Visiteur: ' . $_POST['name'] . '</p>' . "\n" . '<br>' . "\n"; $subject.=$_POST['name'];}
    	if(isset($_POST['email']) and $_POST['email'] != ''){$message_body .= '<p>Email: ' . $_POST['email'] . '</p>' . "\n" . '<br>' . "\n"; $user_email=$_POST['email'];}
    	if(isset($_POST['state']) and $_POST['state'] != ''){$message_body .= '<p>Ville: ' . $_POST['state'] . '</p>' . "\n" . '<br>' . "\n";}
    	if(isset($_POST['phone']) and $_POST['phone'] != ''){$message_body .= '<p>Téléphone: ' . $_POST['phone'] . '</p>' . "\n" . '<br>' . "\n";}	
    	if(isset($_POST['fax']) and $_POST['fax'] != ''){$message_body .= '<p>Fax: ' . $_POST['fax'] . '</p>' . "\n" . '<br>' . "\n";}
    	if(isset($_POST['message']) and $_POST['message'] != ''){$message_body .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";}	
    	if(isset($_POST['stripHTML']) and $_POST['stripHTML']=='true'){$message_body = strip_tags($message_body);$message_type='text';}
     
    try{
    	include "libmail.php";
    	$m= new Mail("utf-8");
    	$m->From($user_email);
    	$m->To($owner_email);
    	$m->Subject($subject);
    	$m->Body($message_body,$message_type);
    	//$m->log_on(true);
     
    	if(isset($_FILES['attachment'])){
     
    	//CA BUG AVEC CETTE LIGNE 
    	//foreach ($_FILES'attachment']) {
     
    		if($_FILES['attachment']['size']>$max_file_size){
    			$error_text=$error_text_filesize . ' ' . $max_file_size . 'bytes';
    			die($error_text);			
    		}else{			
    			if(preg_match($file_types,$_FILES['attachment']['name'])){
    				$m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment');
    			}else{
    				$error_text=$error_text_filetype;
    				die($error_text);				
    			}
    		}
     
    	//}		
     
    	}
    	if(!$use_smtp){
    		$m->smtp_on( $host, $username, $password, $port);
    	}
     
    	if($m->Send()){
    		die('success');
    	}	
     
    }catch(Exception $mail){
    	die($mail);
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    le problème vient du nom des champs, comme il s'appelle tous "attachment", ils s'écrasent entre eux
    tu peux par exemple les nommer "attachment1" "attachment2" et "attachment3" et les informations dans le code PHP seront dans $_FILES["attachment1"], $_FILES["attachment2"], etc.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Multi-sélection dans un formulaire avec la touche CTRL
    Merci Mathieu pour ta réponse.

    Mais ta solution est possible en créant un champ par attachment dans mon formulaire.
    Mais ce que je cherche à faire c'est un seul champ attachment avec une multi-sélection via la touche CTRL me permettant de sélectionner plusieurs pièces jointes et les récupérer pour les insérer ds le mail.

    C'est pour cette raison que j'ai essayé un foreach qui coince.

    Une idée?

    D'avance, merci

    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
    if(isset($_FILES['attachment'])){
     
    	//CA BUG AVEC CETTE LIGNE 
    	//foreach ($_FILES'attachment']) {
     
    		if($_FILES['attachment']['size']>$max_file_size){
    			$error_text=$error_text_filesize . ' ' . $max_file_size . 'bytes';
    			die($error_text);			
    		}else{			
    			if(preg_match($file_types,$_FILES['attachment']['name'])){
    				$m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment');
    			}else{
    				$error_text=$error_text_filetype;
    				die($error_text);				
    			}
    		}
     
    	//}		
     
    	}

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour une sélection multiple essaye de mettre un nom sous forme de tableau comme ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="attachmentMultiple[]" data-input="true" multiple="multiple"/>

    affiche ensuite le tableau $_FILES avec la fonction print_r() pour voir comme il se structure

  5. #5
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Ensuite tu compte le nombre d'entrées et fait une boucle pour renommer les attachement dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=1; $i<=$nombre_attachement; $i++) {
    $attachemet_nom='attachement'.$i;
    // ----- Code pour récupérer
    }
    Je suis aussi assez novice, c'est la méthode que j'utiliserais faute d'autre chose.

Discussions similaires

  1. [AC-2013] Envoyer un e-mail avec PLUSIEURS pièces jointes
    Par JPJOLY dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/01/2015, 17h44
  2. [C#] envoyer un mail avec une piece jointe
    Par arnauann dans le forum C#
    Réponses: 5
    Dernier message: 22/08/2007, 10h09
  3. Réponses: 1
    Dernier message: 21/07/2006, 16h03
  4. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19
  5. [ASP 3] Envoyer un Mail avec une piece jointe générer
    Par soltani.slim dans le forum ASP
    Réponses: 4
    Dernier message: 15/02/2006, 10h16

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