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 :

Pièce jointe manquante


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 362
    Points : 70
    Points
    70
    Par défaut Pièce jointe manquante
    Bonjour,

    Voila je m'en sors pas. J'ai un formulaire dans lequel je propose entre autre de fournir un fichier en pièce jointe.

    Alors que je reçois bien l'email et le fichier dans mon répertoire Upload créer sur le site de mon hébergeur , je ne vois jamais dans l'email le fichier en pièce jointe .

    Comme vous le verrez dans le code je fais pas mal de tests pour savoir en cas d'erreur où ça cloche mais JE N'AI PAS D ERREURS à l'exécution de la page !!!

    Quelqu'un peut-il analyser mon code ci-dessous et me dire ce qui ne semble pas bon ?

    J'ai contacté mon hébergeur pour savoir s'il pouvait m'aider mais il m'a dit grosso modo de me démerder lol.

    Merci d'avance de votre aide.

    Ricardo

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <?php
     
    // Déclaration des variables et constantes
     
    // Constante
    define ('TXT_MAIL_TO','ricardoarrabito@creditriskmanagement.be');
     
    // Variables
    $company = trim($_POST['company']);
    $name = trim($_POST['name']);
    $firstname = trim($_POST['firstname']);
    $email = trim($_POST['email']);
    $message = trim($_POST['message']);
    $object = trim($_POST['object']);
    $dstrep = './Uploads/';
     
    // Headers 
    $headers = "From: " .$company." ".$name." ".$firstname." <".$email.">"."\r\n\r\n";
     
    // Construction du message
    $mainmessage = "Ce mail a été envoyé depuis le site www.creditriskmanagement.be \n\n";
    $mainmessage .= $message;
     
    /* Si le formulaire n'est pas posté de notre site on renvoie vers la page d'accueil 
    if ($_SERVER['HTTP_REFERER'] != 'http://www.creditriskmanagement.be/Contact.php')
    
    
    {  
        header('Location: http://www.creditriskmanagement.be'); 
    } 
    
    */
     
     
     
     
     
    // Je teste l'écriture possible dans mon répertoire Uploads
    if(!is_writable($dstrep))
    	{
    			die(' Impossible d\'écrire dans le répertoire cible ');
    	}
    	else
    	{
    			echo (' Ecriture possible ');
    	}
     
     
    // On vérifie d'abord que des données ont bien été envoyées
    if(!isset($_FILES['fichier']))
     
    	die('Aucune données');
     
    // Je teste l'existence d'un fichier et son bon transfert
    if (isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0)
     
    {
    	// Je teste la taille de mon fichier. 
    	if ($_FILES['fichier']['size'] <= 1000000)
    	{
    		// Je déduit le chemin du fichier
    		$infosfichier = pathinfo($_FILES['fichier']['name']);
     
    		// J'en extrait l'extension
    		$extension_upload = $infosfichier['extension'];
     
    		// Je crée une table avec toutes les extensions autorisées
    		$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'pdf');
     
    		// Je compare l'extention du fichier sélectionné à ma table des extensions autorisées
    		if (in_array($extension_upload, $extensions_autorisees))
    		{
    			// Transfert du fichier uploadé du dossier temporaire vers le dossier de stockage définitif 
    			move_uploaded_file($_FILES['fichier']['tmp_name'], $dstrep . basename($_FILES['fichier']['name']));
     
    			//Je vérifie l'envoi et l'extension
     
    			echo $extension_upload;			
    			echo " L'envoi a bien été effectué !";
     
     
    		}
     
    	}
     
    	else
    	{
    		// Vérification du code d'erreur
    		switch($_FILES['fichier']['error'])
    		{
    			case 1: // UPLOAD_ERR_INI_SIZE
    				die("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
    				break;
    			case 2: // UPLOAD_ERR_FORM_SIZE
    				die("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
    				break;
    			  case 3: // UPLOAD_ERR_PARTIAL
    				die("L'envoi du fichier a été interrompu pendant le transfert !");
    				break;
    			  case 4: // UPLOAD_ERR_NO_FILE
    				die("Le fichier que vous avez envoyé a une taille nulle !");
    				break;
    		}	
     
    	}
     
    	// Envoi de l'email
    if (mail(TXT_MAIL_TO,$object, $mainmessage, $headers))
    	 header('Location: http://www.creditriskmanagement.be'); 
     
     
    }
     
     
    ?>

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    Tu à bien pensé à ajouter le enctype="multipart/form-data" sur ton formulaire ?

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 362
    Points : 70
    Points
    70
    Par défaut Code d'envoi d'une pièce jointe
    Bonjour j'ai lu vos réponse et m'étonne. Mais bon je ne suis pas un pro de PHP.

    D'une part j'ai contrôlé le enctype et j'indique bien "multupart/form-data".

    En outre j'ai revu mon code dans sa totalité et ai testé sur mon serveur local et sur le site de mon hébergeur.

    Comme dit dans le message d'origine je reçois bien les mails et les pièces jointes vont bien dans mon répertoire "Upload".

    le seul gros souci est que je ne vois pas dans le mail qu'il y a une pièce jointe.

    Avant de tester les solutions proposées par Gene69, j'aurais aimé comprendre pourquoi je n'a pas de pièces jointes dans mes mails alors que mon répertoire reçoit bien les fichier sélectionnés.

    Ah et voici le code repensé:

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?php
     
    // Déclaration des constantes
    define ('TXT_MAIL_TO','ricardoarrabito@creditriskmanagement.be');
     
    // Déclaration des variables
    $company = trim($_POST['company']);
    $name = trim($_POST['name']);
    $firstname = trim($_POST['firstname']);
    $email = trim($_POST['email']);
    $message = trim($_POST['message']);
    $object = trim($_POST['object']);
    $dstrep = './Uploads/';
     
    // Construction du Header 
    $headers = "From: " .$company." ".$name." ".$firstname." <".$email.">"."\r\n\r\n";
     
    // Construction du message
    $mainmessage = "Ce mail a été envoyé depuis le site www.creditriskmanagement.be"."\n\n";
    $mainmessage .= $message;
     
    // Je teste l'existence d'un fichier et son bon transfert
    if (isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0)
    {
    	// Je teste la taille de mon fichier. 
    	if ($_FILES['fichier']['size'] <= 1000000)
    	{
    		// Je déduit le chemin du fichier
    		$infosfichier = pathinfo($_FILES['fichier']['name']);
     
    		// J'en extrait l'extension
    		$extension_upload = $infosfichier['extension'];
     
    		// Je crée une table avec toutes les extensions autorisées
    		$extensions_autorisees = array('doc', 'docx', 'xls', 'xlsx', 'txt', 'pdf');
     
    		// Je compare l'extention du fichier sélectionné à ma table des extensions autorisées
    		if (in_array($extension_upload, $extensions_autorisees))
     
    		// Transfert du fichier uploadé du dossier temporaire vers le dossier de stockage définitif 
    			move_uploaded_file($_FILES['fichier']['tmp_name'], $dstrep . basename($_FILES['fichier']['name']));
    	}
    }
    else
    {
    	// Vérification du code d'erreur
    	switch($_FILES['fichier']['error'])
    	{
    		case 1: // UPLOAD_ERR_INI_SIZE
    			die("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
    			break;
    		case 2: // UPLOAD_ERR_FORM_SIZE
    			die("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
    			break;
    		  case 3: // UPLOAD_ERR_PARTIAL
    			die("L'envoi du fichier a été interrompu pendant le transfert !");
    			break;
    		  case 4: // UPLOAD_ERR_NO_FILE
    			die("Le fichier que vous avez envoyé a une taille nulle !");
    			break;
    	}	
     
    }
     
    // Envoi de l'email
    mail(TXT_MAIL_TO,$object, $mainmessage, $headers)
     
    ?>

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 362
    Points : 70
    Points
    70
    Par défaut
    Gene69,

    J'ai lu le code des sources que tu indiques et je fois t'avouer que c'est très compliqué à mon goût.

    Il n'y a pas moyen plus simplement que le fichier que l'on m'envoie apparaisse en pièce jointe ?

    Je suis pas un expert de PHP et j'ai pas envie là de me plonger dans l'étude approfondie de ce langage.

    A l'aide

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 362
    Points : 70
    Points
    70
    Par défaut
    Alors personne d'autre pour m'aider à y voir plus clair ?

  7. #7
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    La question que tu ne te poses pas clairement est la suivante :
    Puis-je envoyer des pièces jointes correctement avec la simple fonction php mail() ou dois-je obligatoirement passer par des librairies plus élaborées ?
    Une fois que tu as cette question, et que tu googlises, tu trouves des pages comme ça, que tu peux tester.

    http://www.ficgs.com/How-to-send-an-...les-s4735.html

Discussions similaires

  1. Pièces jointes et Outlook 2000
    Par Nico118 dans le forum Outlook
    Réponses: 15
    Dernier message: 13/01/2011, 17h19
  2. Pièce jointe manquante
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 03/04/2009, 10h44
  3. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  4. Envoi d'un mail avec fichier en pièce jointe
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 16h30
  5. affichage des pièces jointe sous outllook 2000
    Par darkbm dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 29/10/2003, 11h32

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