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.
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 :)
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 :)
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 ;)
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 ;)