Bonjour,
J'ai suivis le tutoriel concernant le formulaire de contact.
Mais le mail ne s'envoie pas.
J'ai bien le setflash m'indiquant que le message a été envoyé mais je ne reçois rien.
email.php :
public $default = array(
'transport' => 'Mail',
'from' => 'ICI JE MET MON MAIL',
);
Contact.php :
<?php
class Contact extends AppModel{
public $useTable = false;
public $validate = array(
'name' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Vous devez entrer votre nom'
),
'email' => array(
'rule' => 'email',
'required' => true,
'message' => 'Vous devez entrer un email valide'
),
'message' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Vous devez entrer votre message'
)
);
public function send($d){
$this->set($d);
if($this->validates()){
App::uses('CakeEmail','Network/Email');
$mail = new CakeEmail();
$mail->to('ICI JE MET MON MAIL')
->from($d'email'])
->subject('Contact :: Site')
->emailFormat('html')
->template('contact')->viewVars($d);
return $mail->send();
}else{
return false;
}
}
}
ContactController.php :
<?php
class ContactController extends AppController{
public $components = array('Session','Security');
function index(){
$this->layout = "contact";
if($this->request->is('post')){
if(!empty($this->request->data'Contact']'website'])){
$this->Session->setFlash("Votre message a été envoyé avec succès.","notif");
$this->request->data = array();
}
else{
if($this->Contact->send($this->request->data'Contact'])){
$this->Session->setFlash("Votre message a été envoyé avec succès.","notif");
$this->request->data = array();
}
else{
$this->Session->setFlash("Merci de compléter les champs requis.","notif",array('type'=>'error'));
}
}
}
}
}
index.ctp :
<?php $this->set('title_for_layout',"Me contacter"); ?>
<?php echo $this->Form->create('Contact',array('id' => 'contactForm')); ?>
<fieldset>
<div>
<?php echo $this->Form->input('name',array('label'=>"Nom : ","required", 'class' => 'form-poshytip', 'title' => 'Entrez votre Nom de famille')); ?>
</div>
<div>
<?php echo $this->Form->input('email',array('label'=>"Email : ","type"=>"email","required", 'class' => 'form-poshytip', 'title' => 'Entrez votre adresse email')); ?>
</div>
<div>
<?php echo $this->Form->input('website',array('label'=>"Site internet : ","type"=>"text", 'class' => 'form-poshytip', 'title' => 'Entrez votre site internet')); ?>
</div>
<div>
<?php echo $this->Form->input('message',array('label'=>"Message : ","type"=>"textarea","required", 'class' => 'form-poshytip', 'title' => 'Entrez votre message')); ?>
</div>
</fieldset>
<?php echo $this->Form->end('Envoyer'); ?>
En espérant obtenir une aide de votre part.
Amicalement,
DexX
Salut, dans ton dossier View/Layouts/Emails/html/default.ctp
as tu mis ceci :
<?php echo $content_for_layout; ?>
et dans ton dossier un fichier contact.ctp de ce type :
View/Emails/html/contact.ctp
ou tu aurais mis un code du genre
<?php echo $name; ?>
<?php echo $email; ?>
<?php echo $message; ?>
Une autre question aussi, tu mets dans ta fonction index de ton controller ceci :
$this->layout = "contact";
Ce qui veut dire que tu as un contact.ctp dans le dossier View/Layouts/
Est-ce le cas ? Si ce n'est pas le cas, enlève cette ligne et il utilisera le default.ctp
J'ai fais bien tout ce que tu m'a dis. Et ça ne marche toujours pas. Je ne reçois aucun email.
J'ai bien la notif comme quoi le message a bien été envoyé mais je ne reçois rien.
Essaye de remplancer ca,
$mail = new CakeEmail();
par ca, meme si je doute que ce soit ca, on sait jamais.
$mail = new CakeEmail(default);