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 :

Envoi de pièce jointe mail()


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 65
    Points : 54
    Points
    54
    Par défaut Envoi de pièce jointe mail()
    Bonjour à tous,

    je me tourne vers vous en dernier recours,

    je n'arrive pas à envoyer une pièce jointe dans un email..

    Je récupère bien les informations du <input type="file" name="fileToSend" /> , mais lorsque que je prépare le message à envoyer, seule le texte est envoyé...

    Voici mon code, n'hésitez pas à le critiquer, c'est comme ça que l'on apprend

    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
    	// Création de la frontière
    	$boundary = "-----=".md5( uniqid (rand()));
     
    	if (isset($_FILES['fileToSend']['tmp_name']) && is_uploaded_file($_FILES['fileToSend']['tmp_name'])){
            $file_name = $_FILES['fileToSend']['name'];
            $file_type = $_FILES['fileToSend']['type'];
            $file_size = filesize($_FILES['fileToSend']['tmp_name']);
            $content = chunk_split(base64_encode(file_get_contents($_FILES['fileToSend']['tmp_name'])));
    	}
     
     
    	// Création du header de l'e-mail
    	$header = "From: \"MBF\" <xxxx@mxxxxx.fr>".$saut;
    	$header .= "Reply-to: \"MBF\" <xxxx@mxxxxx.fr>".$saut;
    	$header .= "MIME-Version: 1.0".$saut;
    	$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
     
    	// Déclaration du mail (un au format texte et l'autre au format html
    	$mail_html = "<html><head></head><body><b><u>Voici le message :</u></b><i>".nl2br($corps)."</i></body></html>";
    	$mail_text = $corps;
     
    	// Création du message
    	$mess = $saut."--".$boundary.$saut;
     	// Ajout du message au format HTML
    	$mess.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$saut;
    	$mess.= "Content-Transfer-Encoding: 8bit\n\n";
    	$mess.= $saut.$mail_html.$saut;
     
    	$mess.= $saut."--".$boundary."--".$saut;
    	// Ajout du message au format text
    	$mess.= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    	$mess.= "Content-Transfer-Encoding: 8bit\n\n";
    	$mess.= $mail_text;
    	$mess.= $saut."--".$boundary."--".$saut;
     
    	//=====Ajout de la pièce jointe.
    	$mess.= 'Content-type:'.$file_type.';name='.$file_name.$saut;
    	$mess .= 'Content-transfer-encoding:base64'.$saut;
    	$mess .= "Content-Disposition: attachment; filename=\"$file_name\"".$saut;
    	$mess .= $content.$saut;
     
    	// $mess.= "Content-Type: image/jpeg; name=\"".$file_name."\"".$saut;
    	// $mess.= "Content-Transfer-Encoding: base64".$saut;
    	// $mess.= "Content-Disposition: attachment; filename=\"".$file_name."\"".$saut;
    	// $mess.= $saut.$content_encode.$saut.$saut;
    	// $mess.= $saut."--".$boundary."--".$saut; 
     
     // Envoi du message.
    	if (mail($mailToSend,$sujet,$mess,$header))
    		echo "Votre message a bien été envoyé";
    	else echo "Une erreur est survenue, merci de réessayer plus tard";
    Help please

    Florian

  2. #2
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Désolé cela fait longtemps que j'ai fait ça.

    Mais la variable saut est déclarée où ?

    Natso

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 65
    Points : 54
    Points
    54
    Par défaut
    En faite je définie $saut de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // On gère les compatibilités de sauts de lignes avec le webmail destinataire
    	$mailToSend = "xxxxxx@gxxxxxxx.com" ;
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mailToSend))
    		$saut = "\r\n";
    	else $saut = "\n";

  4. #4
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Je suppose que tu as suivi un tuto.

    Lequel ?

    Natso

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 65
    Points : 54
    Points
    54
    Par défaut
    En réalité beaucoup, je suis parvenu à comprendre mieux le système grâce à ce tutoriel notamment :http://a-pellegrini.developpez.com/tutoriels/php/mail/

    Je suis parvenu à envoyer une image en pièce jointe, mais j'ai un problème au niveau des différentes parties de mon mail ( Text ou HTML + piece jointe ), je verrais tout cela demain, en tout cas merci

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 65
    Points : 54
    Points
    54
    Par défaut
    Voici le code permettant l'envoie d'un message HTML et d'une pièce jointe :
    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
    // On gère les compatibilités de sauts de lignes avec le webmail destinataire
    	$mailToSend = "adresse@domaine.com" ;
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mailToSend))
    		$saut = "\r\n";
    	else $saut = "\n";
     
    	$subject=$sujet;
    	// Déclaration du mail (un au format texte et l'autre au format html)
    	$mail_html = "<html><head><title>MESSAGE MAIL</title></head><body>".nl2br($corps)."<br><br>".nl2br($signature)."</body></html>";
     
    		// Création de la frontière
    	$frontiere = "-----=".md5(uniqid(mt_rand()));
     
    	// Création du header de l'e-mail
    	$header = 'From: NOM <adresse@domaine.fr>'.$saut;
    	$header .= 'Reply-to: NOM <adresse@domaine.fr>'.$saut;
    	$header .= 'MIME-Version: 1.0'.$saut;
    	$header .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
     
    	//Creation message HTML
    	$mess= '--'.$frontiere.$saut;	
    	$mess.= 'Content-Type: text/html; charset=\"ISO-8859-1\"'.$saut;
    	$mess.= 'Content-Transfer-Encoding: 8bit'.$saut;
    	$mess.= $mail_html.$saut;
     
    	//Piece jointe
    	if (isset($_FILES['fileToSend']['tmp_name']) && is_uploaded_file($_FILES['fileToSend']['tmp_name'])){
     
    		$mess.= '--'.$frontiere.$saut;	
     
    		$file_name = $_FILES['fileToSend']['name'];
            $file_type = $_FILES['fileToSend']['type'];
            $file_size = filesize($_FILES['fileToSend']['tmp_name']);
            $content = chunk_split(base64_encode(file_get_contents($_FILES['fileToSend']['tmp_name'])));
     
    		//=====Ajout de la pièce jointe.
    		$mess.= 'Content-type:'.$file_type.';name='.$file_name.$saut;
    		$mess.= 'Content-transfer-encoding:base64'.$saut;
    		$mess.='Content_disposition:attachement; filename=\"'.$file_name.'\"'.$saut;
    		$mess.= $content.$saut;
    	}
     
    	// Envoi du message.
    	if (mail($mailToSend,$subject,$mess,$header))
    		echo "Votre message a bien été envoyé";
    	else echo "Une erreur est survenue, merci de réessayer plus tard";
    Ca marche plutôt bien !

    Florian

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

Discussions similaires

  1. Envoie une pièce jointe par mail en RPGle
    Par Lisogane dans le forum AS/400
    Réponses: 2
    Dernier message: 03/03/2011, 17h57
  2. [E-mail] Envoi de pièce jointe depuis un formulaire
    Par rashguir dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2009, 08h13
  3. XBAP - Envoi de pièce jointe par mail
    Par YHDVP dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 22/10/2009, 16h56
  4. Envoi plusieurs pièces jointes dans mail
    Par baime dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 10/03/2009, 13h59
  5. [Mail] Envoi de pièces jointes sur email
    Par Atrahazis dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2007, 14h35

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