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 mail avec pièce attachée


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut envoi de mail avec pièce attachée
    Bonsoir, j'essaie de mettre au point un formulaire qui permettrait d'envoyer un mail avec une pièce attachée, mais j'obtiens un warning.
    Pouvez-vous m'aider ?
    Formulaire :
    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
    <font face="Arial">
    <form method="post" action="upload.php"
     enctype="multipart/form-data">
      <h3 align="center"> Envoi de mail</h3>
    Nom : <input name=" nom" size="30" type="texte">
    Pr&eacute;nom : <input name="prenom" size="40"
     type="texte"> E-mail : <input name="E-mail"
     size="50" type="texte"> <br>
      <br>
    Votre message : <textarea name="msg" rows="6"
     cols="70" a=""></textarea> <br>
      <br>
    Fichier attach&eacute; : <input name="MAX_FILE_SIZE"
     value="3100000" type="hidden"> <input name="file"
     type="file"><br>
      <br>
      <input value="Envoyer" type="submit"><input
     value="Annuler" type="reset"></form>
    </font>
    Action (upload.php) :
    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
    <?php 
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $msg=$_POST['msg'];
    if (($nom=="")||($prenom=="")||($msg=="")) echo "Il manque quelque chose...";
    else {
    $msg=str_replace(array("\r", "\n"), array('', '<br>'), $msg);
    echo "Le texte est :".$msg."<br>";
    $chemin_destination = 'upload/';   
    move_uploaded_file($_FILES['file']['tmp_name'], $chemin_destination.$_FILES['file']['name']); 
    $adr_file=$chemin_destination.$_FILES['file']['name'];
     
         //----------------------------------------------- 
         //DECLARE LES VARIABLES 
         //----------------------------------------------- 
     
         $email_expediteur='---'; 
         $email_reply='---'; 
    	 $destinataire='---';
    	 $message="test";
     
     
         //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
     
         $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; 
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
     
         $message .= '--'.$frontiere.'--'."\n"; 
     
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
     
         $message .= 'Content-Type: image/jpeg; name='.$adr_file."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename='.$adr_file."\n\n"; 
     
         $message .= chunk_split(base64_encode(file_get_contents($adr_file)))."\n"; 
     
         if(mail($destinataire,"test",$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         } 
     
    }
     
    ?>
    Pour cet upload avec pièce attachée, j'ai pris un code trouvé sur ce forum.

    Warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mail() [function.mail]: Spam detecte, mail non envoye. in /mnt/163/sda/2/6/laurentschmitt18/mail/upload.php on line 44

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est une réponse du serveur de mail, il faut voir avec ton hebergeur quelles restrictions il a mis en place.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    OK, comme il s'agit juste d'un essai, je me suis contenté de changer d'hébergeur et de rajouter une ligne manquante : maintenant, un mail arrive, mais il est complètement vide (ni texte, ni pièce attachée).
    Je remets le code de l'action complété (avec en gras ce qui manquait) :
    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
    <?php
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $msg=$_POST['msg'];
    if (($nom=="")||($prenom=="")||($msg=="")) echo "Il manque quelque chose...";
    else {
    $msg=str_replace(array("\r", "\n"), array('', '<br>'), $msg);
    echo "Le texte est :".$msg."<br>";
    $chemin_destination = 'upload/';   
    move_uploaded_file($_FILES['file']['tmp_name'], $chemin_destination.$_FILES['file']['name']); 
    $adr_file=$chemin_destination.$_FILES['file']['name'];
    
         //----------------------------------------------- 
         //DECLARE LES VARIABLES 
         //----------------------------------------------- 
    
         $email_expediteur='---'; 
         $email_reply='--- ';
    	 $destinataire='---';
    	 $message="test";
    	 
    	 $frontiere = '-----=' . md5(uniqid(mt_rand()));
     
    
         //----------------------------------------------- 
         //HEADERS DU MAIL 
         //----------------------------------------------- 
    
         $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; 
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
         $headers .= 'MIME-Version: 1.0'."\n"; 
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
    	 
         $message .= '--'.$frontiere.'--'."\n"; 
    
         //----------------------------------------------- 
         //PIECE JOINTE 
         //----------------------------------------------- 
    
         $message .= 'Content-Type: image/jpeg; name='.$adr_file."\n"; 
         $message .= 'Content-Transfer-Encoding: base64'."\n"; 
         $message .= 'Content-Disposition:attachement; filename='.$adr_file."\n\n"; 
    
         $message .= chunk_split(base64_encode(file_get_contents($adr_file)))."\n"; 
    
         if(mail($destinataire,"test",$message,$headers)) 
         { 
              echo 'Le mail a été envoyé'; 
         } 
         else 
         { 
              echo 'Le mail n\'a pu être envoyé'; 
         } 
    }
    
    ?>
    Il manquait l'affectation de $frontiere. Mais quel peut être le problème, maintenant, sachant que j'ai copié le code sur ce forum et que pour être sûr, j'ai essayé 2 hébergeurs, et qui ont le même comportement ?

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton echo t'affiche quelque chose ?

    au passage, il existe la fonction nl2br()

  5. #5
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Un peu de lecture...
    Envoyer un mail en PHP n'est pas une tâche bien difficile. Personnaliser son mail et comprendre le fonctionnement des différents entêtes est bien plus compliqué.

    Source : Envoyer un mail en PHP

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Ton echo t'affiche quelque chose ?
    Mes 2 echo affichent quelque chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Le texte est :".$msg."<br>";
    affiche bien le message et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Le mail a été envoyé';
    est bien affiché
    au passage, il existe la fonction nl2br()
    J'en ai tenu compte : au lieu de l'équivalent
    Salut,

    Un peu de lecture...
    Envoyer un mail en PHP n'est pas une tâche bien difficile. Personnaliser son mail et comprendre le fonctionnement des différents entêtes est bien plus compliqué.
    Source : Envoyer un mail en PHP


    Même en essayant de m'en inspirer (même si ça vient du même forum, il y a de petites différences), c'est pareil...

  7. #7
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Essaie avec ce code
    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
    <?php
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $msg=$_POST['msg'];
     
    if (($nom=="")||($prenom=="")||($msg==""))
    	echo "Il manque quelque chose...";
    else {
    	$msg=str_replace(array("\r", "\n"), array('', '<br>'), $msg);
    	echo "Le texte est :".$msg."<br>";
    	$chemin_destination = 'upload/';
    	move_uploaded_file($_FILES['file']['tmp_name'], $chemin_destination.$_FILES['file']['name']);
    	$adr_file=$chemin_destination.$_FILES['file']['name'];
     
    	//-----------------------------------------------
    	//DECLARE LES VARIABLES
    	//-----------------------------------------------
     
    	$email_expediteur='---';
    	$email_reply='--- ';
    	$destinataire='---';
     
    	$frontiere = '-----=' . md5(uniqid(mt_rand()));
     
    	//-----------------------------------------------
    	//HEADERS DU MAIL
    	//-----------------------------------------------
     
    	$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
    	$headers.= 'Return-Path: <'.$email_reply.'>'."\n";
    	$headers.= 'MIME-Version: 1.0'."\n";
    	$headers.= 'Content-Type: multipart/mixed; boundary="'.$frontiere."\"\n\n";
     
    	//-----------------------------------------------
    	//MESSAGE
    	//-----------------------------------------------
     
    	$message ='This is a multi-part/mixed message in MIME format.'."\n";
    	$message.='--'.$frontiere."\n";
    	$message.='Content-Type: text/html; charset="ISO-8859-1"'."\n";
    	$message.='Content-Transfer-Encoding: base64'."\n\n";
     
    	$message.=chunk_split(base64_encode($msg))."\n";
     
    	//-----------------------------------------------
    	//PIECE JOINTE
    	//-----------------------------------------------
     
    	$base=basename($adr_file);
     
    	$message.='--'.$frontiere."\n";
    	$message.= 'Content-Type: image/jpeg; name='.$base."\n";
    	$message.= 'Content-Transfer-Encoding: base64'."\n";
    	$message.= 'Content-Disposition:attachement; filename='.$base."\n\n";
    	$message.= chunk_split(base64_encode(file_get_contents($adr_file)))."\n";
    	$message.='--'.$frontiere.'--'."\n";
     
    	if(@mail($destinataire,"test",$message,$headers)){
    		echo 'Le mail a été envoyé';
    	}else{
    		echo 'Le mail n\'a pu être envoyé';
    	}
    }
    ?>

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Je viens d'essayer, mais ça n'arrange rien...

  9. #9
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Re,

    Concernant ton premier "Warning", Sabotage a donné la réponse...
    Citation Envoyé par sabotage
    C'est une réponse du serveur de mail, il faut voir avec ton hebergeur quelles restrictions il a mis en place.
    Concernant le code que je t'ai fourni, je l'ai testé sur Free (sans la partie upload) et il fonctionne...

    Citation Envoyé par laurentSc
    Je viens d'essayer, mais ça n'arrange rien...
    C'est normal si tu l'executes depuis le serveur qui a envoyé le "Warning".

    Dans le cas contraire... Bah je comprends pas.

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Maintenant, ça marche (enfin), mais chez 1&1, car chez Free, avec le même code, j'obtiens un mailer daemon... Mais ça ne fait rien.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je me permets de rebondir à ce post parce que j'ai un souci assez similaire avec un code très proche de celui proposé par laurentSc et je ne parviens pas à récupérer la pièce jointe ...

    - Le fichier est bien upload sur mon serveur FTP.
    - Le mail est bien envoyé sur la boîte mail (Free) avec la partie texte mais aucun signe de la pièce jointe, que ce soit sous forme d'image ou sous forme de codes en fin de mail.

    Pouvez-vous me donner votre avis sur le code ci-dessous pour trouver ce qui cloche ? Ca fait 3 semaines que je planche dessus et je commence à tourner en rond

    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
    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    <?php
     
    //UPLOAD
     
        $dossier = 'Photos/';
        $maxsize = '1048576';
     
     
        if ($_FILES['mon_fichier']['error'] > 0)
        {
            $erreur = 'Erreur lors du transfert';
        }
        else
        {
            if ($_FILES['mon_fichier']['size'] > $maxsize)
            {
                $erreur = 'Erreur : Le fichier est trop gros.';
            }
            else
            {
                $extensions_valides = array('jpg','jpeg','bmp');
                $extension_upload = strtolower(  substr(  strrchr($_FILES['mon_fichier']['name'], '.'),1));
     
                if (in_array($extension_upload,$extensions_valides))
                {
     
     
                            $nom = "{$_FILES['mon_fichier']['name']}";
                            $resultat = move_uploaded_file($_FILES['mon_fichier']['tmp_name'],$dossier.$nom);
                            $adresse_fichier = $dossier.$_FILES['mon_fichier']['name'];
     
                }    
                else
                {
                    echo 'Erreur : Sélectionnez un fichier de type .bmp ou .jpg';
                }
            }
        }
     
     
         //-----------------------------------------------
         //DECLARE LES VARIABLES
         //-----------------------------------------------
     
         $email_expediteur='xxx@xxx.xx';
         $destinataire='xxx@xxx.xx';
         $sujet='Demande de publication';
         $date = date("d-m-Y" );
         $heure = date("H:i" );
         $redirection = "redirection.html";
     
         $frontiere = '-----=' . md5(uniqid(mt_rand()));
     
        //Concaténation champ Paiement
        $Paiement = $_POST['Paiement'];
        $sqlPaiement = '';
        for ($i=0; $i<count($Paiement); $i++)
        {
        $sqlPaiement .= $Paiement[$i];
        $sqlPaiement .= ', ';
        }
     
        //Concaténation champ Livraison
        $Livraison = $_POST['Livraison'];
        $sqlLivraison = '';
        for ($i=0; $i<count($Livraison); $i++)
        {
        $sqlLivraison .= $Livraison[$i];
        $sqlLivraison .= ', ';
        }
     
        //TEXTE
     
         $message1 = "DEMANDE DE VALIDATION D'ANNONCE"."\r\n\n";
         $message1 .= "Date : $date"."\r\n";
         $message1 .= "Heure : $heure"."\r\n\n";
         $message1 .= "------------------------------------------"."\r\n\n";
         $message1 .= "Nom : $Nom"."\r\n";
         $message1 .= "Prénom : $Prenom"."\r\n";
         $message1 .= "Secteur-Centre : $Secteur, $Centre"."\r\n\n";
         $message1 .= "------------------------------------------"."\r\n\n";
         $message1 .= "Rubrique : $Rubrique"."\r\n";
         $message1 .= "Intitulé de l'objet : $Intitule"."\r\n";
         $message1 .= "Description : $Description"."\r\n";
         $message1 .= "Etat : $Etat"."\r\n\n";
         $message1 .= "------------------------------------------"."\r\n\n";
         $message1 .= "Prix : $Prix"."\r\n";
         $message1 .= "Moyen de Paiement : $sqlPaiement"."\r\n";
         $message1 .= "Autre Paiement : $AutrePaiement"."\r\n";
         $message1 .= "Mode de Livraison : $sqlLivraison"."\r\n";
         $message1 .= "Autre Livraison : $AutreLivraison"."\r\n";
     
     
         //-----------------------------------------------
         //HEADERS DU MAIL
         //-----------------------------------------------
     
         $headers = 'From: $email_expediteur'."\r\n";
         $headers .= 'MIME-Version: 1.0'."\r\n";
         $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere."\"\n\n";
         $headers .= "\r\n";
     
         //-----------------------------------------------
         //MESSAGE TEXTE
         //-----------------------------------------------
         $message = 'This is a multi-part message in MIME format.'."\r\n";
     
         $message .= '--'.$frontiere."\n";
     
         $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
         $message .= 'Content-Transfer-Encoding: 8bit'."\r\n";
         $message .= $message1."\r\n";
     
         //-----------------------------------------------
         //PIECE JOINTE
         //-----------------------------------------------
     
         $base=basename($adresse_fichier);
     
         $message.='--'.$frontiere."\n";
     
         $message .= 'Content-Type: image/jpeg; name=$base'."\r\n";
         $message .= 'Content-Transfer-Encoding: base64'."\r\n";
         $message .= 'Content-Disposition:attachement; filename=$base'."\r\n";
     
         $message .= chunk_split(base64_encode(file_get_contents($nom)))."\r\n";
     
         $message .= '--'.$frontiere.'--'."\n";
     
     
    if (mail($destinataire,$sujet,$message,$headers)) {
     
      //Le mail est bien expédié
        echo "<script language=\"javascript\">";
        echo "window.location=('$redirection');";
        echo "</script>";
    } else {
     
      //Le mail n'a pas été expédié
      echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
    }
     
     
    ?>

  12. #12
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Une variable n'est pas interprétée entre les apostrophes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $s = 'debut $base'."\r\n";	// Incorrect
     
    $s = "debut $base\r\n";		// Variable interprétée (mais pas très lisible)
     
    $s = 'debut'.$base."\r\n";	// Correct (plus propre)
    Ci-dessous les lignes à modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $message .= 'Content-Type: image/jpeg; name='.$base."\r\n";
     
    $message .= 'Content-Disposition:attachement; filename='.$base."\r\n";
    Ca devrait le faire.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour Eric et merci pour ton conseil,

    C'est vrai que j'ai quelques lacunes dans la syntaxe qui peuvent déboucher sur des heures de recherches alors qu'il s'agit d'erreurs toutes bêtes ...

    J'ai bien modifié les deux lignes que tu mentionnes, pour le moment ça n'a pas résolu le problème de réception de la pièce jointe ...

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Salut,

    je n'ai pas cherché à éplucher ton code, mais comme tu dis avoir des problèmes avec l'envoi de mail, je te donne mon code (la partie envoi de mail) (qui marche) pour qu'éventuellement, tu t'en inspires :
    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
    $chemin_destination = 'upload/';
    	... // upload
    	$adr_file=$chemin_destination.$_FILES['file']['name'];
     
    	//-----------------------------------------------
    	//DECLARE LES VARIABLES
    	//-----------------------------------------------
     
    	$email_expediteur=$mail;
    	$email_reply=$mail;
    	$destinataire=$mail;
     
    	$frontiere = '-----=' . md5(uniqid(mt_rand()));
     
    	//-----------------------------------------------
    	//HEADERS DU MAIL
    	//-----------------------------------------------
     
    	$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
    	$headers.= 'Return-Path: <'.$email_reply.'>'."\n";
    	$headers.= 'MIME-Version: 1.0'."\n";
    	$headers.= 'Content-Type: multipart/mixed; boundary="'.$frontiere."\"\n\n";
     
    	//-----------------------------------------------
    	//MESSAGE
    	//-----------------------------------------------
     
    	$message ='This is a multi-part/mixed message in MIME format.'."\n";
    	$message.='--'.$frontiere."\n";
    	$message.='Content-Type: text/html; charset="ISO-8859-1"'."\n";
    	$message.='Content-Transfer-Encoding: base64'."\n\n";
     
    	$message.=chunk_split(base64_encode(nl2br($msg)))."\n";
     
    	//-----------------------------------------------
    	//PIECE JOINTE
    	//-----------------------------------------------
     
    	$base=basename($adr_file);
     
    	$message.='--'.$frontiere."\n";
    	$message.= 'Content-Type: image/jpeg; name='.$base."\n";
    	$message.= 'Content-Transfer-Encoding: base64'."\n";
    	$message.= 'Content-Disposition:attachement; filename='.$base."\n\n";
    	$message.= chunk_split(base64_encode(file_get_contents($adr_file)))."\n";
    	$message.='--'.$frontiere.'--'."\n";
     
    	if(@mail($destinataire,$sujet,$message,$headers)){
    		echo 'en gros, ça marche'."\n";
    }
    	 else{
    		echo "ça n'a pas marché"."\n";
    	}
    Edit : je viens d'enlever le tag "résolu" pour que les gens lisent davantage ce fil, et je le remettrai quand ce sera résolu.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir Laurent,

    Merci pour ton exemple. J'ai regardé par rapport à mon code et il n'y a quasiment pas de différences de syntaxes (juste des /r en plus chez moi par endroits). J'ai testé mais j'ai une erreur qui apparaît au niveau du headers associé à l'expéditeur ...

    Finalement voyant que ça aggravait le problème, j'ai annulé toutes les modifications, relancé mon fichier .php d'origine (celui présenté ici) et retesté le code.

    Et là ça marche "mieux" mais c'est pas toujours ça ! J'obtiens effectivement un fichier en PJ mais il s'agit d'un document txt qui me diffuse une URL vers un fichier apparemment

    Alors là je ne comprends plus où est le problème ... Tu utilises ton code pour quel serveur mail ? Je teste chez Free moi, le problème vient de là ça se trouve ...

    Merci pour ton aide.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    En fait même le fichier (affiché en image/jpeg alors que c'est un .txt) n'est pas systématiquement envoyé

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Je t'avais répondu tout-à-l'heure, mais visiblement, j'ai fait une fausse manip.
    Pour dire que effectivement, chez Free (chez qui j'ai recopié tout ce site), je me paye un "mailer-daemon", alors que chez 1&1, ça marche bien.
    Donc, si tu peux faire ça ailleurs que chez Free, c'est mieux.

Discussions similaires

  1. [Mail] Problème d'envoi de mail avec pièces jointes
    Par nelly644 dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2007, 10h14
  2. Réponses: 1
    Dernier message: 21/02/2007, 10h49
  3. Envoie de Mail avec Pièce jointe
    Par Yaz dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/07/2006, 13h51
  4. Envoi de mail avec pièce jointe
    Par gids01 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 20/04/2006, 13h15
  5. Envoi de mail avec pièce attachée par SMTP
    Par yess78 dans le forum IIS
    Réponses: 4
    Dernier message: 09/12/2005, 13h33

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