CakeEmail et les pièces jointes

Par ndiayejp, il y a 14 ans


Bonjour à tous j'ai un formulaire de contact classique sous cakephp et j'aimerai rajouté un champ pièce jointe et permettre à l'utilisateur de transmettre aussi des fichiers via le formulaire de contact ! je ne trouve pas sur la doc un paragraphe qui parle de ça ! somedy help me please !

4 réponses

ndiayejp, il y a 14 ans

Oui mais y a aucun exemple qui montre comment attacher une pièce jointe à partir d'un formulaire

ker0x, il y a 14 ans

CakeMail attachment

Après pour attacher le fichier à partir d'un formulaire, tu fait comme pour uploader un fichier. Tu le met dans un dossier sur ton site, tu l'attache à ton email avec le morceau de code qu'on voit sur le lien que j'ai donné et tu le supprime une fois que l'email est envoyé !

Oublie pas de faire des vérifications pour savoir si le champ du fichier est bien remplit, si l'extension du fichier est bien correcte etc...

ndiayejp, il y a 14 ans

j'ai essayé de faire comme tu as dis mais ça marche pas un petit coup de main serait le bienvenue ! voici mon code sous forme de fonction

public function send($d){
        $this->set($d);
        if($this->validates()){
            App::uses('CakeEmail', 'Network/Email');
            $mail = new CakeEmail();
             if(isset($d'document'])){
                   $dir = IMAGES.'docs';
                    if(!file_exists($dir))
                        mkdir($dir,0777);

                    $f = $d'document']'name'];
                    move_uploaded_file($d'document']'tmp_name'],$dir.DS.$f);
                    $mail->to('ndiayejp@gmail.com')
                            ->from($d'email'])
                            ->subject('Demande de Cotation')                   
                            ->emailFormat('html')                           
                            ->template('cotation')->viewVars($d);
                            ->attachments(array($f=> array(
                                    'file' => '../img/docs/'.$f,

                            ));

             }

                        return $mail->send();

        }
        else {return false;}
    }