Bonjour,

Je viens à nouveau vous solliciter car je rencontre quelques soucis d'affichage de mon mail à sa réception.

En effet, j'ai un formulaire de contact basique, avec Nom, Email, Message.

Voici le code :

Controller :

function index(){
        $this->layout = "contact";
        if(isset($this->data)){

            $this->Mail->create($this->data);
            // Nettoyage de la saisie
            App::import('Sanitize');
            $this->data = Sanitize::clean($this->data);
            $this->Mail->set('data', $this->data);

            if($this->Mail->validates()){
                $this->Email->charset = 'UTF-8';
                $this->Email->to = "test@test.ch";
                $this->Email->subject = "Demande de contact";
                $this->Email->from = $this->data"Mail"]"email"];
                $this->Email->replyTo = $this->data"Mail"]"email"];
                $this->Email->template = "contact";
                $this->Email->sendAs = "html";

                $Nom = $this->data"Mail"]"nom"];
                $Mail = $this->data"Mail"]"email"];
                $Content = $this->data"Mail"]"message"];
                $this->set(compact('Nom','Mail','Content'));

                $this->Email->send();
                $this->Session->setFlash("Votre message a bien été envoyé");
                $this->redirect(array('action' => 'index'));
            }
        }
    }

Le layout HTML :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>
<body>
    <?php echo $content_for_layout; ?>
</body>
</html>

L'élément contact.ctp en HTML :

<p>Une demande vient d'être formulée sur Entr'aide 2030.</p>
<p>Date : <?php echo date('d/m/Y H:i'); ?></p>
<p>Envoyé par : <?php echo $Nom; ?></p>
<p>Adresse email : <?php echo $Mail; ?></p>
<p>Message : <?php echo $Content; ?></p>

Tout fonctionne, sauf que voici le résultat que je reçois à réception :

X-Mailer: CakePHP Email Component 
Content-Type: text/html; charset=UTF-8 
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 

<html> 
<body> 
<p>Une demande vient d'être formulée.</p> 
<p>Date : 10/02/2011 19:12</p> 
<p>Envoyé par : Innah</p> 
<p>Adresse email : test@test.com</p> 
<p>Message : Voici un test :)</p></body> 
</html>

Comment puis-je faire pour retirer tout ce code affiché en dur ainsi que les indications concernant le component Email... ?

Merci d'avance pour votre aide.

6 réponses


Flohw
Réponse acceptée

ca vient du fait que tu "sanitize" ton contenu... un "<" est transformé en < et en html il est affiché "<" donc tu retrouves ton code html :)

Innah
Auteur

Merci pour ta réponse flohw.

Effectivement, maintenant sur Hotmail je reçois le contenu correctement... Faut juste que je test avec 1 ou 2 autres outils de messagerie...

Etrange quand même car sur plusieurs tutos "écrits" ils utilisent Sanitize justement... Et ils disent que ça fonctionne sans soucis... A n'y rien comprendre...

Merci encore :)

Innah
Auteur

Bon, j'ai pu déjà effectué un premier test.

Alors, sur hotmail je reçois tout correctement. Génial :)

Par contre, sur outlook 2007, rien n'a changé. Je reçois le code html en dur ainsi que les infos sur le component Email de CakePHP...

Mes caractères spéciaux sont cependant affichés correctement :)

Une idée pour éviter que mon code html ne s'affiche ? Ainsi que les infos sur le component ?

ca doit venir de ta configuration outlook qui récupère les messages au format texte et pas html je pense ;)

Innah
Auteur

Malheureusement non :(

J'ai bien le format réceptionné par défaut en HTML... :(

mh étrange malheureusement, je vaéis pas pouvoir t'aider plus ne disposant pas d'outlook ni de micro$oft... si tu veux que ton sujet repasse en premiere page, eleve le "cette réponse m'a aidé" et remet le plus tard quand ca sera complètement résolu ;)