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 :

E-mail avec pièce jointe mais sans message


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Points : 28
    Points
    28
    Par défaut E-mail avec pièce jointe mais sans message
    Salut tous,

    J'ai un problème d'envoyer le mail. J'ai réussi d'envoyer le mail avec attachement mais je ne vois pas mon message. si j'envoie un mail sans attachement je vois les messages, si j'envoie un mail avec attachement je ne vois pas les messages. Je ne comprends pas.

    aidez moi svp.

    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
     
    if(isset($_POST['Statut']))
    {
        $f1=$_FILES['file1']['name'];
     
        $subject='Some subject goes here';
     
        $mailto = "xxx@xxx.com";
     
        $num = md5(uniqid(time()));
        $headers  = "From: <societe@name.com>\r\n";
        $headers  .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type:text/plain; charset=iso-8859-1\r\n";
        $headers .= "Content-Transfer-Encoding: 8bit\r\n";
     
     
        if($f1!='')
        {    
            $file_type=$_FILES['file1']['type'];
            $file1 = "temp/".$f1;        
            move_uploaded_file($_FILES['file1']['tmp_name'], $file1);        
            chmod($file1,0777);
     
            $file_size = filesize($file1);
            $handle = fopen($file1,"rb");
            $content = fread($handle, $file_size);        
            $content = chunk_split(base64_encode($content));
     
     
     
            //Attachement headers
     
            $headers  .= "Content-Type:".$file_type." ";
            $headers  .= "name=\"".$f1."\"r\n";
            $headers  .= "Content-Transfer-Encoding: base64\r\n";
            $headers  .= "Content-Disposition: attachment; ";
            $headers  .= "filename=\"".$f1."\"\r\n\n";
            $headers  .= "".$content."\r\n";
            $headers  .= "--".$num."--";        
     
            fclose($handle);
        }
     
     
     
        $message .= "Nom :".$_POST['Nom']."\r\n";
        $message .= "Prénom :".$_POST['Prenom']."\r\n";
        $message .= "Téléphone :".$_POST['Telephone']."\r\n";
        $message .= "Message :".$_POST['Message']."\r\n";    
        $message .= "Mail :".$_POST['Email']."\r\n";
     
     
     
        if(@mail($mailto, $subject, $message, $headers)) 
        {
                echo '<p align="center" style="margin-top:50px;"><strong>Votre message a été bien envoyer à Société XXX. Merci de fermer la fénêtre</strong></p>';        
        } 
        else 
        {
            echo '<p align="center" style="margin-top:50px;">ERROR!</p>';                
        }

  2. #2
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Moi j'utiliserai un autre Content-type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Content-Type: multipart/mixed;
    Et dans ton $header je rajouterai quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $headers  = "From: <societe@name.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-multipart/mixed; charset=iso-8859-1\r\n";
    $headers .= "\"PHP-mixed-".$num."\"\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    De plus ton "//Attachement headers" ne doit pas être dans $headers mais dans ton $message!
    Voici pour moi la structure d'un email (en reprenant la tienne)!

    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
     
    $to = "mail@domain.gon";
    $subject = "A test email";
    $uniq_hash = md5(date('r', time()));
    // Voila le $headers du mail
    $headers = "From: noreply@domain.gon\r\nReply-To: noreply@domain.gon";
    $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$uniq_hash ."\"";
     
    if($f1!='') {    
      $file_type=$_FILES['file1']['type'];
      $file1 = "temp/".$f1;        
      move_uploaded_file($_FILES['file1']['tmp_name'], $file1);        
      chmod($file1,0777);
     
      $file_size = filesize($file1);
      $handle = fopen($file1,"rb");
      $content = fread($handle, $file_size);        
      $content = chunk_split(base64_encode($content));
     
      //Attachement headers
      $attachment  = "Content-Type:".$file_type." ";
      $attachment  .= "name=\"".$f1."\"r\n";
      $attachment  .= "Content-Transfer-Encoding: base64\r\n";
      $attachment  .= "Content-Disposition: attachment; ";
      $attachment  .= "filename=\"".$f1."\"\r\n\n";
      $attachment  .= "".$content."\r\n";
      $attachment  .= "--PHP-mixed-$uniq_hash--\r\n";        
     
      fclose($handle);
    }
     
    $message = "--PHP-mixed-$uniq_hash\r\n";
    $message = "Content-Type: multipart/alternative; boundary='PHP-alt-$uniq_hash'\r\n";
    // Ton message texte (en texte normal)
    $message = "Content-Type: text/plain; charset='iso-8859-1'--PHP-alt-$uniq_hash\r\n";
    $message = "Content-Transfer-Encoding: 7bit\r\n";
    $message .= "Nom :".$_POST['Nom']."\r\n";
    $message .= "Prénom :".$_POST['Prenom']."\r\n";
    $message .= "Téléphone :".$_POST['Telephone']."\r\n";
    $message .= "Message :".$_POST['Message']."\r\n";    
    $message .= "Mail :".$_POST['Email']."\r\n";
    // Ton message HTML
    $message .= "--PHP-alt-$uniq_hash\r\n";
    $message .= "Content-Type: text/html; charset='iso-8859-1'\r\n";
    $message .= "Content-Transfer-Encoding: 7bit\r\n";
    $message .= "<u>Nom :</u>".$_POST['Nom']."\r\n";
    $message .= "<u>Prénom :</u>".$_POST['Prenom']."\r\n";
    $message .= "<u>Téléphone :</u>".$_POST['Telephone']."\r\n";
    $message .= "<u>Message :</u>".$_POST['Message']."\r\n";    
    $message .= "<u>Mail :</u>".$_POST['Email']."\r\n";
    $message .= "--PHP-alt-$random_hash--\r\n";
    // Ton fichier joint !
    $message .= "--PHP-mixed-$uniq_hash\r\n";
    $message .= $attachment;
     
    if(mail($to, $subject, $message, $headers)) {
      echo 'Mail correctement envoyé!';
    else
      echo 'Erreur!';

  3. #3
    Membre habitué Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Points : 155
    Points
    155
    Par défaut
    pardon de m'incruster mais comme ce poste correspond à mon problème je préfère vous poser la question ici.

    1°) j'ai recherché les tutoriaux et tout ce qu'il pourrait m'aider dans la résolution de mon problème.

    2°) une question me trote dans la tête: puisque toutes les solutions que j'ai vue pour permettre d'envoyer un mail en HTML et avec une pièce jointe ne fonctionne pas sur ma configuration est il possible que l'envoi multipart soit désactivé sur le serveur php ?

    j'ai repris ton code qui ne fonctionne pas chez moi ... (j'utilise hotmail et livemail) est-ce que ca peut venir de là ?

    PS: je reçois les e-mail (juste pour préciser)
    Le langage de programmation le plus vieux, le plus optimiser et le plus efficace est l'ADN quelqu'un d'extrêmement intelligent l'a obligatoirement inventé.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 62
    Points : 125
    Points
    125
    Par défaut PHP function mail
    Bonjour

    j'ai créer un formulaire de contact à partir du quel un internaute
    peut m'envoyer des messages et en même temps recevoir un accuser de réceptions sur sa boite mail.
    alors j'ai écris le code suivant:

    Pour l'accuser de réception:
    $headers ='From: "xxx"<contact@xxx.org>'."\n";
    $headers .='Reply-To: "xxx"<contact@xxx.org>'."\n";
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $headers .='Content-Transfer-Encoding: 8bit';

    $msg="Merci de toute l'attention......";

    if(mail(trim($_POST['email']),"Contact",$msg,$headers)){
    echo "blalalla";
    }else{
    echo "bkkakak";
    }

    Pour que je reçoive le msg:
    $header ='From: "'.$nom.' '.$pnom.'"<'.$mail.'>'."\n";
    $header .='Reply-To: '.$mail."\n";
    $header .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $header .='Content-Transfer-Encoding: 8bit';
    $m_contact=stripslashes($message);
    mail("contact@xxxx.org",$sujet,$m_contact,$header);

    Le problème est qu'à l'exécution le serveur m'affiche:

    Warning: mail() [function.mail]: SMTP server response: 550 <xxxxx@yyyy.com> No such user here in C:\Inetpub\vhosts\pgrp.org\httpdocs\adhesion.php on line 42
    echo "bkkakak";

    Ainsi l'internaute ne reçoit aucun msg alors que moi je recois le msg que lui ma envoyer dans mon webmail.

    j'aimerai savoir si le problème se trouve au niveau de mon code ou bien serait il lier à l'hébergeur qui n'envoie de msg à l'externe
    Merci d'avance

Discussions similaires

  1. rejeter mail avec pièce jointe et affiche un message à la place
    Par vicky777plus dans le forum Administration système
    Réponses: 0
    Dernier message: 11/08/2014, 20h04
  2. [AC-2003] Envoi mail à liste de destinataires avec pièce jointe et sans Outlook
    Par philippe.desrues dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/07/2013, 15h35
  3. Mail avec pièce jointe ET message
    Par annabella12 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/10/2012, 11h26
  4. Envoi mail avec pièce jointe sans confirmation
    Par grrimag dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2008, 14h23
  5. [VB]Bp envoie mail avec piéce jointe
    Par jm1213 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/02/2006, 20h55

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