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 :

Fonction mail en PHP et le return path obligatoire pour oleane quel syntaxe?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Fonction mail en PHP et le return path obligatoire pour oleane quel syntaxe?
    Bonjour,

    Mon script PHP en local fonctionne mais pas chez l'hébergeur ?

    Voici le script exemple que me propose orange en me disant que le return path est obligatoire sur le serveur :

    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
     
    <?php
    $headers ='From: "Essai OBH"<test@oleane-hebergement.com>'."\n";
    $headers .='Return-Path: test@oleane-hebergement.com'."\n";
    $headers .='Reply-To: test@oleane-hebergement.com'."\n";
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
     
    if(mail('test@oleane-hebergement.com', 'test', 'message avec
    enveloppe complete', $headers))
    {
    echo 'Le message a bien été envoyé';
    }
    else
    {
    echo 'Le message n\'a pu être envoyé';
    }
    ?>

    Je reprends alors leur code pour adapter le mien à mon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    <?php
    /* Récupération des valeurs des champs du formulaire */
        $Nom = $_POST['Nom'];
        $Prenom = $_POST['Prenom']; 
        $Email = $_POST['Email'];
        $Telephone = $_POST['Telephone']; 
        $Objet = $_POST['Objet']; 
        $Message = $_POST['Message'];
     
    /* Destinataire (votre adresse e-mail) */
    $to = "moi@moi.net";
     
    /* Construction du message */
    $msg  = "Bonjour,"."\r\n\r\n";
    $msg .= "Ce mail a été envoyé depuis moi.com par ".$Nom." ".$Prenom."\r\n\r\n";
    $msg .= "L'Email de la personne est : ".$Email. "\r\n";
    $msg .= "Le numéro de Téléphone de la personne est : ".$Telephone. "\r\n";
    $msg .= "L'Objet du message est :".$Objet. "\r\n";
    $msg .= "Voici le message qui vous est adressé :"."\r\n";
    $msg .= "***************************"."\r\n";
    $msg .= $Message."\r\n";
    $msg .= "***************************"."\r\n";
     
    /* En-têtes de l'e-mail */
     
    $headers = "From: ".$Nom." <".$Email.">"."\n";
    $headers .='Return-Path: ".$Email."\n"; 
    $headers .='Reply-To:".$Email."\n"; 
    $headers .='Content-Type: text/plain; charset="iso-8859-1'."\n"; 
    $headers .='Content-Transfer-Encoding: 8bit'; 
    
    /* Envoi de l'e-mail */
    mail($to, $Objet, $msg, $headers);
    Mais voilà => ça marche pas !
    J'ai fais une erreur de syntaxe??

    Je n'ai pas de message d'erreur, tout se passe bien comme si l'email était bien parti.

    Cependant je ne reçois rien ; aucun email ;

    Je sais que je n'ai pas mis de message d'erreur pouvant soulever le non envoi du mail ; mais je voulais réduire le script à sa plus simple expression pour comprendre d'où vient l'erreur mais je ne voit pas!!

    D'autant plus qu'en local, avec le même script tout fonctionne très bien, à la différence qu'avec wamp, j'initialise mon php.ini et j'ajoute dans mon script php la fonction ini_set pour forcer le smtp de mon opérateur.

    en un mot HELP

    Merci beaucoup d'avance

  2. #2
    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
    Citation Envoyé par djamess
    J'ai fais une erreur de syntaxe ?
    Oui, remplace les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $headers .='Return-Path: ".$Email."\n"; 
    $headers .='Reply-To:".$Email."\n";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    Edit : Et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut
    Que dire de plus!!

    MERCIII

    Fin de journée plus les yeux en face des trous!!

    LOL

    Mais le problème c'est que c'est pas finis!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Pièce jointe n'arrive pas non plus?
    J'ai crié victoire trop vite
    :-(
    dslé

    Alors dans le même genre, j'ai effectué un formulaire pour charger des pièce jointe en local ça marche et pas chez l'herbergeur!

    Mais la je pense avoir fait attention à la syntaxe !

    Voici mon 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
    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
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
     
    /* Récupération des valeurs des champs du formulaire */
     
        	$Email = $_POST['Email']; 
        	$Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
     
    // To
    $to = "soua@laposte.net";
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n\r\n";
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = "From: "." <".$Email.">"."\r\n\r\n";
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    $headers .= "\r\n";
     
    /* Construction du message */
    $msg  = "Bonjour, "."\r\n\r\n";
    $msg .= "Ce mail a été envoyé depuis moi.com "."\r\n\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est  :".$Objet. "\r\n";
    $msg .= "Un message avec une pièce jointe"."\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";
     
     
    // Pièce jointe LM
    $file_name = $LM;
    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";
    }
     
    // Pièce jointe CV
    $file_name = $CV;
    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";
     
    $Objet2 = "Poste demandé par moi.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msg, $headers);
    ?>
    Je vois pas pourquoi en local ça marche et pas chez mon hebergeur?

    Merci d'avance pour votre aide

  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
    $msg doit bien commençer avec cette ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = 'This is a multipart/mixed message.'."\r\n\r\n";
    Mais dans ton code elle n'est pas à sa place. Essaie donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* Construction du message */
    $msg  = 'This is a multipart/mixed message.'."\r\n\r\n";
    $msg .= "Bonjour, "."\r\n\r\n";
    $msg .= "Ce mail a été envoyé depuis moi.com "."\r\n\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est  :".$Objet. "\r\n";
    $msg .= "Un message avec une pièce jointe"."\r\n";
    Et surtout, il faut ajouter les tirets après le $boundary pour finaliser le tout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Fin
    $msg .= '--'.$boundary."--\r\n";

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Pas de retour d'erreurs mais le mail avec pièce jointe n'arrive pas
    Re Eric2a

    J'ai suivi tes conseils et corrigé mais toujours la même chose pas de réception de mail et pas d'erreur en retour...

    Je ne vois pas quoi faire

    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
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
     
    /* Récupération des valeurs des champs du formulaire */
     
        	$Email = $_POST['Email']; 
        	$Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
     
    // To
    $to = "soua@laposte.net";
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n\r\n";
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = "From: "." <".$Email.">"."\r\n\r\n";
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    $headers .= "\r\n";
     
    /* Construction du message */
    $msg  = 'This is a multipart/mixed message.'."\r\n\r\n";
    $msg .= "Bonjour, "."\r\n\r\n";
    $msg .= "Ce mail a été envoyé depuis moi.com "."\r\n\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est  :".$Objet. "\r\n";
    $msg .= "Un message avec une pièce jointe"."\r\n";
     
    // Texte
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
     
     
    // Pièce jointe LM
    $file_name = $LM;
    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";
    }
     
    // Pièce jointe CV
    $file_name = $CV;
    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";
     
    $Objet2 = "Poste demandé par SOUASOUA.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msg, $headers);
    ?>
    Je ne comprends pas pourquoi ce script ne fonctionne pas??
    Je devrais recevoir mon email avec mes deux pièces jointes...

    Merci de votre aide

  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
    Bon, j'ai testé un nouveau code avec des valeurs perso et une image ($LM='images/logo.png')...

    Je reçois le mail avec la pièces jointe ;-)

    Je n'avais pas vu cela, mais il manquait cette ligne pour les pièces jointes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg.='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    La nouvelle variable $txt (contenant uniquement le texte lu par le destinataire) ainsi que $Objet2 sont convertis en Base64 afin que les accents soient pris en compte.

    Par contre, il faudra voir comment déterminer le type MIME d'un fichier. Ce n'est pas le rôle de la fonction filetype().
    Dans mon test, j'ai mis 'image/png'.
    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
    <?php
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    $eol="\n";
     
    // Texte
    $txt ='Bonjour, '.$eol.$eol;
    $txt.='Ce mail a été envoyé depuis moi.com '.$eol.$eol;
    $txt.='L\'Email de la personne est : '.$Email.$eol;
    $txt.='L\'Objet du message est  : '.$Objet.$eol;
    $txt.='Un message avec une pièce jointe'.$eol;
    $txt = chunk_split(base64_encode($txt));
     
    // Headers
    $headers ='From: '.$Email.$eol;
    $headers.='Return-Path: '.$Email.$eol;
    $headers.='Reply-To: '.$Email.$eol;
    $headers.='X-Priority: 3'.$eol;
    $headers.='X-Mailer: PHP/'.phpversion().$eol;
    $headers.='MIME-Version: 1.0'.$eol;
    $headers.='Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol.$eol;
     
    // Message
    $msg ='This is a multi-part/mixed message in MIME format.'.$eol;
    $msg.='--'.$boundary.$eol;
    $msg.='Content-Type: text/plain; charset="UTF-8"'.$eol;
    $msg.='Content-Transfer-Encoding: base64'.$eol.$eol;
    $msg.=$txt;
     
    // Pièce jointe LM
    $file_name = $LM;
    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);
    	$file_name=basename($file_name);
     
    	$msg.='--'.$boundary.$eol;
    	$msg.='Content-type: '.$file_type.'; name="'.$file_name.'"'.$eol;
    	$msg.='Content-Transfer-Encoding: base64'.$eol;
    	$msg.='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msg.=$content.$eol;
    }
     
    // Pièce jointe CV
    $file_name = $CV;
    if (file_exists($file_name))
    {
    	$file_type = filetype($file_name);
    	$file_type = 'text/plain';
    	$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);
    	$file_name=basename($file_name);
     
    	$msg.='--'.$boundary.$eol;
    	$msg.='Content-type: '.$file_type.'; name="'.$file_name.'"'.$eol;
    	$msg.='Content-Transfer-Encoding: base64'.$eol;
    	$msg.='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msg.=$content.$eol;
    }
     
    // Fin
    $msg.='--'.$boundary.'--'.$eol;
     
    $Objet2 ='=?UTF-8?B?'.base64_encode('Poste demandé par SOUASOUA.COM: '.$Objet).'?=';
     
    // Function mail()
    mail($to, $Objet2, $msg, $headers);
    ?>

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Pourquoi ne pas utiliser des librairies Open Source comme PhpMailer (qui fonctionne très bien, et il doit en avoir d'autres) qui offrent tout ce dont on a besoin, au lieu de tout coder de A à Z ?
    -> http://phpmailer.worxware.com/
    -> http://stephaneey.developpez.com/tut...php/phpmailer/

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut
    Bonjour à vous!

    Alors nous avançons car Eric2a tu me permets de corriger certains pb, et d'arriver à recevoir l'email; Cependant dans l'email que je reçoit je n'ai pas de pièce jointe?

    J'essaie avec différentes pièce jointes .jpg .doc ... et rien ne passe

    Pour répondre à RunCodePhp, se serait avec plaisir d'utiliser quelque chose de prêt à l'emploi mais adapté à ce que je souhaite.

    Mon formulaire à une certaine forme avec des entrées, comment adapter un code déjà formaté à ce que je souhaite dans la partie

    d'e-mail avec un fichier attaché

    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
     
    <?
    	require "phpmailer2/class.phpmailer.php";
    	$mail = new PHPmailer();
    	$mail->IsSMTP();
    	$mail->IsHTML(true);
    	$mail->Host='hote_smtp';
    	$mail->From='votre@adresse';
    	$mail->AddAddress('adresse@destinataire');
    	$mail->AddReplyTo('votre@adresse');	
    	$mail->Subject='Exemple trouvé sur DVP';
    	$mail->Body='<html><body><center><font size=8>Le fichier est attaché ci-dessus</font><br></body></html>';
    	$mail->AddAttachment('chemin_fichier/fichier');
     
     
    	if(!$mail->Send()){
    	  echo $mail->ErrorInfo; 
    	}
    	else{	  
    	  echo 'Mail envoyé avec succès';
    	}
    	$mail->SmtpClose();
    	unset($mail);
     
    ?>
    mes input sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	$Email = $_POST['Email']; 
        	$Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];

    D'autre par que faut-il installé comme librairie, où faut-il la mettre?

    Merci de votre aide

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Je reçois l email sans les pièces jointes en ayant modifié mon CODE
    Re Bonjour!

    J'ai repris légèrement mon Code :

    - En Local avec wamp tout est nickel ça marche parfaitement bien, je reçois l'email et les pièces jointes

    - Mais en étant hebergé chez orange, je reçois juste l'email sans les pièces jointes.

    Par contre ce qui me surprend c'est que dans mon système de messagerie j'ai bien une indication avec l'épingle qui indique qu'il y a des pièces jointes. Pourtant y a rien.

    Voici le 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
    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
     
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
     
    /* Récupération des valeurs des champs du formulaire */
     
        $Email = $_POST['Email']; 
        $Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
    // To
    $to = "moi@laposte.net";
     
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n";
     
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
    //$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\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";
     
    /* Construction du message */
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
    $msg .= "Bonjour, "."\r\n";
    $msg .= "Ce mail a ete envoye depuis moi.com "."\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est : le poste recherche est le suivant :".$Objet. "\r\n";
    $msg .= "Un message avec une piece jointe"."\r\n"; 
     
    // Pièce jointe
    $file_name = $LM;
    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);
     
    	$msglm = '--'.$boundary."\r\n";
    	$msglm .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msglm .= 'Content-transfer-encoding:base64'."\r\n";
    	$msglm .= $content."\r\n";
    }
     
    $file_name = $CV;
    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);
     
    	$msgcv = '--'.$boundary."\r\n";
    	$msgcv .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msgcv .= 'Content-transfer-encoding:base64'."\r\n";
    	$msgcv .= $content."\r\n";
    }
     
    // Fin
    $msgfin = '--'.$boundary."\r\n";
     
    $msgt=$msg.$msglm.$msgcv.$msgfin;
     
    $Objet2 = "Poste demande par moi.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msgt, $headers);
    ?>

    Pourquoi avec ce même code, en local ça marche et chez mon hébergeur je reçois juste l'email sans les pièces jointes avec quand même l'indication que les pièces jointes sont présentes???

    Merci pour votre aide

  11. #11
    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,
    Citation Envoyé par djamess
    J'ai repris légèrement mon Code
    Le dernier code que j'ai posté est parfaitement fonctionnel à partir du moment où :

    la variable $file_type correspond à un Type MIME et non au type de fichier renvoyé par la fonction filetype.

    Exemple :
    1. lisezmoi.txt > text/plain
    2. image.png > image/png

    Dans le cas contraire certains serveurs ignorerons les pièces jointes.

    Pour mon test, j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $LM = 'images/logo.png';
    $file_type = 'image/png';
    Inportant !
    Les lignes ci-dessous doivent être présentes (sinon pas de pièces jointes non plus).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $file_name=basename($file_name);
    ...
    $msg.='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    Mais alors comment vérifier le type MIME d'un fichier ?

    Utiliser une librairie Open Source comme l'a suggéré RunCodePhp.

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Mon formulaire à une certaine forme avec des entrées, comment adapter un code déjà formaté à ce que je souhaite dans la partie

    D'autre par que faut-il installé comme librairie, où faut-il la mettre?
    Je n'ai fais que te suggérer d'utiliser un soft Open Source. Maintenant c'est à toi de voir.

    Mais j'y vois aucun intérêt à t'expliquer comment l'installer, l'exploiter, etc ... car ça aussi ça existe déjà, il y a tout ce qu'il faut.
    J'ai mis un lien vers un tuto qui explique déjà tout ça.
    De plus, si tu télécharge le Soft, il y a aussi une doc, faq, des exemples.

    Je ne parle même pas tout ce que tu pourrais trouver en faisant une simple recherche sur Google (fais le avec comme mot clé phpmailer, tu verras).

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Les pièces jointes n'arrivent pas
    Bonjour Eric2a,

    J'ai bien rajouté les lignes manquantes, le résultat est le même, les pièces jointes n'arrivent pas

    Voici le 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
    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
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
    $eol="\n";
    /* Récupération des valeurs des champs du formulaire */
     
        $Email = $_POST['Email']; 
        $Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
    // To
    $to = "MOI@laposte.net";
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n";
     
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
    //$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\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";
     
    /* Construction du message */
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
    $msg .= "Bonjour, "."\r\n";
    $msg .= "Ce mail a ete envoye depuis MOI.com "."\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est : le poste recherche est le suivant :".$Objet. "\r\n";
    $msg .= "Un message avec une piece jointe"."\r\n"; 
     
    // Pièce jointe
    $file_name = $LM;
    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);
    	$file_name=basename($file_name);
     
    	$msglm = '--'.$boundary."\r\n";
    	$msglm .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msglm .= 'Content-transfer-encoding:base64'."\r\n";
    	$msglm .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msglm .= $content."\r\n";
    }
     
    $file_name = $CV;
    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);
    	$file_name=basename($file_name);
     
    	$msgcv = '--'.$boundary."\r\n";
    	$msgcv .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msgcv .= 'Content-transfer-encoding:base64'."\r\n";
    	$msgcv .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msgcv .= $content."\r\n";
    }
     
    // Fin
    $msgfin = '--'.$boundary."\r\n";
     
    $msgt = $msg.$msglm.$msgcv.$msgfin;
     
    $Objet2 = "Poste demande par MOI.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msgt, $headers);
    ?>
    Je ne comprends pas??
    Surtout que l'email arrive bien en indiquant qu'il y a des pièces jointes mais elles ne sont pas là

    Merci de votre aide

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut PHPMAILER
    Bonjour RunCodePhp,

    Etant très curieux, j'ai essaiyé PHPMAILER mais sans succès :

    Alors voici comment j'ai ecris le script 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
     
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes avec phpmailer */
    /*----------------------------------------------------------------*/
    $eol="\n";
    /* Récupération des valeurs des champs du formulaire */
     
        $Email = $_POST['Email']; 
        $Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
    // To
    $to = "moi@laposte.net";
     
    include "phpmailer/class.phpmailer.php";					
    //ou
    require "phpmailer/class.phpmailer.php";
     
    	$mail = new PHPmailer();
    	$mail->IsSMTP();
    	$mail->IsHTML(true);
    	$mail->Host='smtp.auth.orange-business.com';
    	$mail->Host='hote:587'
    	$mail->From= $to;
    	$mail->AddAddress($Email);
    	$mail->AddReplyTo($to);	
    	$mail->Subject= $Objet;
    	$mail->Body= "Bonjour, 
    	Ce mail a ete envoye depuis moi.com 
    	L Email de la personne est : ".$Email. "\r\n
    	L Objet du message est : le poste recherche est le suivant :".$Objet. "\r\n
    	Un message avec une piece jointe"."\r\n";
     
    	$mail->AddAttachment($LM,$CV);
     
     
    	if(!$mail->Send()){
    	  echo $mail->ErrorInfo; 
    	}
    	else{	  
    	  echo 'Mail envoyé avec succès';
    	}
    	$mail->SmtpClose();
    	unset($mail);
    ?>
    et la je me dis y a un truc que j'ai du loupé ;

    Qu'en penses-tu?

    Merci de votre aide

  15. #15
    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
    Le serveur indique qu'il y a des pièces jointes parce que le mail est de type "multipart/mixed".

    1) Es-tu sûr que les variables $LM et $CV correspondent bien à des fichiers présents sur le serveur ?
    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
    $LM = $_POST['LM'];
    $CV = $_POST['CV'];
     
    if ( file_exists($LM) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $LM . ' ('. $LM . ') '. $s . '<br />';
     
    if ( file_exists($CV) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $CV . ' ('. $CV . ') '. $s . '<br />';
    Dans le cas contraire, il faudrait faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $LM = $_POST['LM'];
    $CV = $_POST['CV'];
     
    $chemin = './' ; // Répertoire contenant les fichiers
     
    $LM = $chemin . basename($LM);
    $CV = $chemin . basename($CV);
    2) N'utilise plus filetype

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut Le fichier n'existe pas l'erreur est bien là
    Re Bonjour Eric2a!

    en effet, il y a bien un soucis avec les fichiers...

    J'ai suivis ta démarche et ça me retourne l'info le fichier n'existe pas ;

    J'ai supprimé également file type

    Par contre ça veut dire que les variables ne prennent pas la valeur du chemin du fichier à télécharger...

    Je vois pas pourquoi?

    Qu'est ce qui empêcherai cela?

    Merci de votre aide




    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
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
    $eol="\n";
    /* Récupération des valeurs des champs du formulaire */
     
        $Email = $_POST['Email']; 
        $Objet = $_POST['Objet'];
    	$LM = $_POST['LM']; 
    	$CV = $_POST['CV'];    
     
    $chemin = './' ; // Répertoire contenant les fichiers
     
    $LM = $chemin . basename($LM);
    $CV = $chemin . basename($CV);
     
     
    	if ( file_exists($LM) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $LM . ' ('. $LM . ') '. $s . '<br />';
     
    if ( file_exists($CV) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $CV . ' ('. $CV . ') '. $s . '<br />';
     
    $chemin = './' ; // Répertoire contenant les fichiers
     
    $LM = $chemin . basename($LM);
    $CV = $chemin . basename($CV);
     
     
    // To
    $to = "soua@laposte.net";
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n";
     
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
    //$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\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";
     
    /* Construction du message */
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
    $msg .= "Bonjour, "."\r\n";
    $msg .= "Ce mail a ete envoye depuis souasoua.com "."\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est : le poste recherche est le suivant :".$Objet. "\r\n";
    $msg .= "Un message avec une piece jointe"."\r\n"; 
     
    // Pièce jointe
    $file_name = $LM;
    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);
    	$file_name=basename($file_name);
     
    	$msglm = '--'.$boundary."\r\n";
    	$msglm .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msglm .= 'Content-transfer-encoding:base64'."\r\n";
    	$msglm .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msglm .= $content."\r\n";
    }
     
    $file_name = $CV;
    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);
    	$file_name=basename($file_name);
     
    	$msgcv = '--'.$boundary."\r\n";
    	$msgcv .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msgcv .= 'Content-transfer-encoding:base64'."\r\n";
    	$msgcv .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msgcv .= $content."\r\n";
    }
     
    // Fin
    $msgfin = '--'.$boundary."\r\n";
     
    $msgt = $msg.$msglm.$msgcv.$msgfin;
     
    $Objet2 = "Poste demande par SOUASOUA.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msgt, $headers);
    ?>

  17. #17
    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
    J'ai toujours considéré que les fichiers étaient présents sur le serveur parce que je n'ai pas vu le plus évident
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    Pour l'upload, il faut utiliser $_FILE et non $_POST.

    Peux-tu poster ton formulaire ?

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 73
    Points : 17
    Points
    17
    Par défaut $_FILES j'avais essayé les deux même combat même résultat
    Re Eric2a,

    $_FILES j'avais essayé les deux même combat même résultat :
    les fichiers existent pas
    c'est fou ça

    Voici mon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <div id="FormulaireCV" style="position:absolute; left:25%; top:75%; width:50%; height:50%; z-index:69">
      <form action="ciblerecrut.php" method="post" name="Formulaire" id="Formulaire">
        <table width="99%" height="50%" border="0">
          <tr> 
            <td width="32%" height="28"><div align="right"><font face="Monotype Corsiva"><strong>Poste 
                souhait&eacute; :</strong> </font></div></td>
            <td width="30%"><input name="Objet" type="text" id="Objet2"></td>
          </tr>
          <tr> 
            <td height="30"><div align="right"><font face="Monotype Corsiva"><strong>Votre 
                E-mail:</strong> </font></div></td>
            <td><input name="Email" type="text" id="Email2"></td>
          </tr>
          <tr> 
            <td height="28"><div align="right"><font face="Monotype Corsiva"><strong>Lettre 
                de Motivation :</strong></font></div></td>
            <td> <div align="left"> 
                <input name="LM" type="file" id="LM3">
              </div></td>
          </tr>
          <tr> 
            <td height="27"><div align="right"><font face="Monotype Corsiva"><strong>CV 
                :</strong></font></div></td>
            <td> <div align="left"> 
                <input name="CV" type="file" id="CV3">
              </div></td>
          </tr>
          <tr> 
            <td height="28">&nbsp;</td>
            <td> <div align="left">
                <input type="submit" name="Submit" value="Envoyer">
              </div></td>
          </tr>
        </table>
        <p>&nbsp;</p>
        </form>
    </div>

    Voici à nouveau mon script 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
    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
     
     
    <?php
     
    /*----------------------------------------------------------------*/
    /* Envoie du mail avec les pièces jointes qui ont été uploadées */
    /*----------------------------------------------------------------*/
    $eol="\n";
    /* Récupération des valeurs des champs du formulaire */
     
        $Email = $_POST['Email']; 
        $Objet = $_POST['Objet'];
    	$LM = $_FILES['LM']; 
    	$CV = $_FILES['CV'];    
     
    //$chemin = './' ; // Répertoire contenant les fichiers
     
    // $LM = $chemin . basename($LM);
    // $CV = $chemin . basename($CV);
     
    	if ( file_exists($LM) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $LM . ' ('. $LM . ') '. $s . '<br />';
     
    if ( file_exists($CV) )
    	$s = 'existe';
    else
    	$s = 'n\'existe pas';
     
    echo $CV . ' ('. $CV . ') '. $s . '<br />';
     
    //$chemin = './' ; // Répertoire contenant les fichiers
     
    //$LM = $chemin . basename($LM);
    //$CV = $chemin . basename($CV);
     
     
    // To
    $to = "moi@laposte.net";
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    /* En-têtes de l'e-mail */
    $headers = "From: "." <".$Email.">"."\r\n";
     
    $headers .='Return-Path: '.$Email."\n"; 
    $headers .='Reply-To: '.$Email."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
    //$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\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";
     
    /* Construction du message */
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
    $msg .= 'Content-transfer-encoding:8bit'."\r\n";
    $msg .= "Bonjour, "."\r\n";
    $msg .= "Ce mail a ete envoye depuis moi.com "."\r\n";
    $msg .= "L Email de la personne est : ".$Email. "\r\n";
    $msg .= "L Objet du message est : le poste recherche est le suivant :".$Objet. "\r\n";
    $msg .= "Un message avec une piece jointe"."\r\n"; 
     
    // Pièce jointe
    $file_name = $LM;
    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);
    	$file_name=basename($file_name);
     
    	$msglm = '--'.$boundary."\r\n";
    	$msglm .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msglm .= 'Content-transfer-encoding:base64'."\r\n";
    	$msglm .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msglm .= $content."\r\n";
    }
     
    $file_name = $CV;
    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);
    	$file_name=basename($file_name);
     
    	$msgcv = '--'.$boundary."\r\n";
    	$msgcv .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msgcv .= 'Content-transfer-encoding:base64'."\r\n";
    	$msgcv .='Content-Disposition: attachment; filename="'.$file_name.'"'.$eol.$eol;
    	$msgcv .= $content."\r\n";
    }
     
    // Fin
    $msgfin = '--'.$boundary."\r\n";
     
    $msgt = $msg.$msglm.$msgcv.$msgfin;
     
    $Objet2 = "Poste demande par moi.COM: ".$Objet."\r\n";
     
    // Function mail()
    mail($to, $Objet2, $msgt, $headers);
    ?>

  19. #19
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par djamess Voir le message
    Re Eric2a,

    $_FILES j'avais essayé les deux même combat même résultat :
    les fichiers existent pas
    c'est fou ça
    pour utiliser $_FILES il faut mettre l'attribut "enctype" dans la balise "form" :
    http://php.net/features.file-upload.post-method

    et pour envoyer un fichier en pièce jointe, utilise PHPMailer, c'est plus rapide :
    http://jcrozier.developpez.com/tutor...eloppeurs/#LIV

  20. #20
    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
    Il s'agit d'upload multiple donc...

    À mon tour de suggérer un script : Gestionnaire d'upload de fichier en PHP
    Il prend en compte MIME.

    Téléchargement : Upload

Discussions similaires

  1. Fonction mail en php et Serveur de mail
    Par Rudya dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 26/04/2007, 12h11
  2. [Mail] Fonction mail en PHP
    Par rte304 dans le forum Langage
    Réponses: 1
    Dernier message: 11/04/2007, 22h02
  3. [Mail] probleme avec la fonction mail de php
    Par fdavid dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2006, 15h48
  4. [Mail] Fonction mail () de php
    Par goma771 dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 21h18

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