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 :

[Mail] Changer nom pièce jointe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut [Mail] Changer nom pièce jointe
    Bonjour,

    j'utilise la class SimpleMail pour l'envoi de mail avec pièce jointe. mais voila mon problème c'est que je sais pas comment on defini le nom de la pièce jointe.

    par exemple, en piece jointe j'ai un pdf, donc en faite le nom de la piece jointe à la reception est l'adresse du fichier sans les slashs, moi ce que je voudrais c'est mettre un autre nom.

    voici la classe simplemail

    <?php

    class simplemail {

    var $recipient;
    var $subject;
    var $hfrom;
    var $headers;
    var $hbcc;
    var $hcc;
    var $text;
    var $html;
    var $attachement;
    var $htmlattachement;
    var $error_log;

    function simplemail() {
    $this -> attachement = array();
    $this -> htmlattachement = array();
    }

    function checkaddress($address) {
    if ( preg_match("`[0-9a-zA-Z\.\-_]+@[0-9a-zA-z\-]{3,}\.[a-z]{2,4}`" , $address ) )
    { return TRUE; }
    else
    { $this->error_log.="l'adresse $address est invalide\n"; return FALSE; }
    }

    function checkname($name) {
    if ( preg_match("`[0-9a-zA-Z\.\-_ ]*`" , $name ) )
    { return TRUE; }
    else
    { $this->error_log.=" le pseudo $name est invalide\n"; return FALSE; }
    }

    function makenameplusaddress($address,$name) {
    if ( !$this->checkaddress($address) ) return FALSE;
    if ( !$this->checkname($name) ) return FALSE;
    if ( empty($name) ) { return $address; }
    else { $tmp=$name." <".$address.">"; return $tmp; }
    }

    function addrecipient($newrecipient,$name='') {
    $tmp=$this->makenameplusaddress($newrecipient,$name);
    if ( !$tmp ) { $this->error_log.=" To: error\n"; return FALSE; }
    if ( !empty($this->recipient) ) $this->recipient.= ",";
    $this->recipient.= $tmp;
    return TRUE;
    }

    function addbcc($bcc,$name='') {
    $tmp=$this->makenameplusaddress($bcc,$name);
    if ( !$tmp ) { $this->error_log.=" Bcc: error\n"; return FALSE; }
    if ( !empty($this->hbcc)) $this->hbcc.= ",";
    $this->hbcc.= $tmp;
    return TRUE;
    }

    function addcc($cc,$name='') {
    $tmp=$this->makenameplusaddress($cc,$name);
    if ( !$tmp ) { $this->error_log.=" Cc: error\n"; return FALSE; }
    if (!empty($this->hcc)) $this->hcc.= ",";
    $this->hcc.= $tmp;
    return TRUE;
    }

    function addsubject($subject) {
    if (!empty($subject)) $this->subject= $subject;
    }

    function addfrom($from,$name='') {
    $tmp=$this->makenameplusaddress($from,$name);
    if ( !$tmp ) { $this->error_log.=" From: error\n"; return FALSE; }
    $this->hfrom = $tmp;
    return TRUE;
    }

    function addreturnpath($return) {
    $tmp=$this->makenameplusaddress($return,'');
    if ( !$tmp ) { $this->error_log.=" Return-Path: error\n"; return FALSE; }
    $this->returnpath = $return;
    return TRUE;
    }

    function addreplyto($replyto) {
    $tmp=$this->makenameplusaddress($replyto,'');
    if ( !$tmp ) { $this->error_log.=" Reply-To: error\n"; return FALSE; }
    $this->returnpath = $tmp;
    return TRUE;
    }

    // les attachements
    function addattachement($filename) {
    array_push ( $this -> attachement , array ( 'filename'=> $filename ) );
    }

    // les attachements html
    function addhtmlattachement($filename,$cid='',$contenttype='') {
    array_push ( $this -> htmlattachement , array ( 'filename'=>$filename , 'cid'=>$cid , 'contenttype'=>$contenttype ) );
    }

    function sendmail() {
    $headers="";
    if ( empty($this->recipient) ) { $this->error_log.="destinataire manquant\n"; return FALSE; }
    if ( empty($this->subject) ) { $this->error_log.="sujet manquant\n"; return FALSE; }

    if ( !empty($this->hfrom) ) $headers.= "From: ".$this->hfrom."\n";
    if ( !empty($this->returnpath) ) $headers.= "Return-Path: ".$this->returnpath."\n";
    if ( !empty($this->replyto) ) $headers.= "Reply-To: ".$this->replyto."\n";
    if ( !empty($this->hcc) ) $headers.= "Cc: ".$this->hcc."\n";
    // if ( !empty($this->hbcc) ) $headers.= "Bcc: ".$this->hbcc."\n";
    $headers .="MIME-Version: 1.0\n";

    //echo $headers;

    if ( !$this->html && $this->text ) {

    $B1B="----=_001";
    $headers.="Content-Type: multipart/mixed;\n\t boundary=\"".$B1B."\"\n";
    if ( !empty($this->hcc) ) $headers.= "Cc: ".$this->hcc."\n";
    if ( !empty($this->hbcc) ) $headers.= "Bcc: ".$this->hbcc."\n";


    //Messages start with text/html alternatives in OB
    $message ="This is a multi-part message in MIME format.\n";
    $message.="\n--".$B1B."\n";

    $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $message.="Content-Transfer-Encoding: quoted-printable\n\n";
    // plaintext goes here
    $message.=$this->text."\n\n";

    if ( !empty($this->attachement) ) {
    foreach($this->attachement as $AttmFile){
    $patharray = explode ("/", $AttmFile['filename']);
    $FileName=$patharray[count($patharray)-1];

    $message.= "\n--".$B1B."\n";

    $message.="Content-Type: application/octetstream;\n name=\"".$FileName."\"\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="Content-Disposition: attachment;\n filename=\"".$FileName."\"\n\n";

    $fd=fopen ($AttmFile['filename'], "rb");
    $FileContent=fread($fd,filesize($AttmFile['filename']));
    fclose ($fd);

    $FileContent=chunk_split(base64_encode($FileContent));
    $message.=$FileContent;
    $message.="\n\n";
    }
    }
    //message ends
    $message.="\n--".$B1B."--\n";
    }
    elseif ( $this->html ) {
    $B1B="----=_001";
    $B2B="----=_002";
    $B3B="----=_003";

    if ( !$this->text ) { $this->text="HTML only!"; }
    $headers.="Content-Type: multipart/mixed;\n\t boundary=\"".$B1B."\"\n";
    if ( !empty($this->hcc) ) $headers.= "Cc: ".$this->hcc."\n";
    if ( !empty($this->hbcc) ) $headers.= "Bcc: ".$this->hbcc."\n";


    //Messages start with text/html alternatives in OB
    $message ="This is a multi-part message in MIME format.\n";
    $message.="\n--".$B1B."\n";

    $message.="Content-Type: multipart/related;\n\t boundary=\"".$B2B."\"\n\n";
    //plaintext section
    $message.="\n--".$B2B."\n";

    $message.="Content-Type: multipart/alternative;\n\t boundary=\"".$B3B."\"\n\n";
    //plaintext section
    $message.="\n--".$B3B."\n";

    $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $message.="Content-Transfer-Encoding: quoted-printable\n\n";
    // plaintext goes here
    $message.=$this->text."\n\n";

    // html section
    $message.="\n--".$B3B."\n";
    $message.="Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $message.="Content-Transfer-Encoding: base64\n\n";
    // html goes here
    $message.=chunk_split(base64_encode($this->html))."\n\n";

    // end of text
    $message.="\n--".$B3B."--\n";

    // attachments html
    if ( !empty($this->htmlattachement) ) {
    foreach($this->htmlattachement as $AttmFile){
    $patharray = explode ("/", $AttmFile['filename']);
    $FileName=$patharray[count($patharray)-1];

    $message.= "\n--".$B2B."\n";

    $message.="Content-Type: {$AttmFile['contenttype']};\n name=\"".$FileName."\"\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="Content-ID: <{$AttmFile['cid']}>\n";
    $message.="Content-Disposition: inline;\n filename=\"".$FileName."\"\n\n";

    $fd=fopen ($AttmFile['filename'], "rb");
    $FileContent=fread($fd,filesize($AttmFile['filename']));
    fclose ($fd);

    $FileContent=chunk_split(base64_encode($FileContent));
    $message.=$FileContent;
    $message.="\n\n";
    }
    }
    //html ends
    $message.="\n--".$B2B."--\n";

    if ( !empty($this->attachement) ) {
    foreach($this->attachement as $AttmFile){
    $patharray = explode ("/", $AttmFile['filename']);
    $FileName=$patharray[count($patharray)-1];

    $message.= "\n--".$B1B."\n";

    $message.="Content-Type: application/octetstream;\n name=\"".$FileName."\"\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="Content-Disposition: attachment;\n filename=\"".$FileName."\"\n\n";

    $fd=fopen ($AttmFile['filename'], "rb");
    $FileContent=fread($fd,filesize($AttmFile['filename']));
    fclose ($fd);

    $FileContent=chunk_split(base64_encode($FileContent));
    $message.=$FileContent;
    $message.="\n\n";
    }
    }
    //message ends
    $message.="\n--".$B1B."--\n";
    }

    $recipient=$this->recipient;
    $subject=$this->subject;

    if ( @mail($recipient, $subject, $message, $headers) ) { return TRUE; } else { return FALSE; }
    }
    }
    ?>
    Si vous pouvez me dire comment modifier la classe ca serait sympa, voici comment j'envoie des pièces jointes:

    <?php

    include('simplemail.php');

    $mail = new simplemail;
    $mail -> addrecipient('tetsuo@xxx.com','tetsuo');//destinataire
    $mail -> addfrom('test@xxx..com','gwbush');//expediteur
    $mail -> addsubject('yyy yyy');//sujet

    // le message text
    $mail -> text = 'plain text etc. etc. bla bla ...';

    // une piece jointe.
    $mail -> addattachement ( 'adresse_fichier' );

    if ( $mail -> sendmail() ) { echo "envoyé"; } else { echo "erreur"; echo $mail->error_log; }

    ?>
    merci de votre aide

  2. #2
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Tu veux envoyer c:/mesdocuments/mondoc.pdf et que le destinataire recoive un fichier nommé toto.pdf ?

    C'est bien ça ou je suis à côté de la plaque ?
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    et je veux avoir:

    mondoc.pdf

    enfaite, j'aimerai que je puisse meme choisir ce que je veux par exemple

  4. #4
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Citation Envoyé par Alain15
    et je veux avoir:

    mondoc.pdf

    enfaite, j'aimerai que je puisse meme choisir ce que je veux par exemple

    Développe parceque tu as répondu à moitié à ma question en fait...
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    en faite j'envoie des pièces jointes en utilisant la fonction addattachement($filename) qui a comme paramètre le lien du fichier à inclure.

    par exemple j'envoi c:/mesdocuments/mondoc.pdf (le paramètre filename)
    et je recois comme nom de pièce jointe dans ma boite c:mesdocumentsmondoc.pdf et moi j'aimerai bien recevoir que mondoc.pdf

    j'espère avoir été plus clair??

    merci de votre aide.

  6. #6
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Cherche ces lignes dans ta classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( !empty($this->attachement) ) {
    foreach($this->attachement as $AttmFile){
    $patharray = explode ("/", $AttmFile['filename']);
    $FileName=$patharray[count($patharray)-1];
    et ajoute en dessous un echo $FileName;

    A la lecture du code il ne devrait rester que le nom de ton fichier sans le chemin c'est vraiment bizarre. Enfin dis moi ce que le echo te donne
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

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

Discussions similaires

  1. Mail, binary et pièce jointe
    Par Maurice Fallou dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/08/2006, 21h03
  2. [Mail] Mail multipart et pièces jointes
    Par Ricou13 dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2006, 15h41
  3. Yahoo mail beta et pièce jointe
    Par ixterm dans le forum Dépannage et Assistance
    Réponses: 6
    Dernier message: 27/06/2006, 14h02
  4. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19
  5. [Mail] Récupérer une pièce jointe d'un mail
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2005, 16h21

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