Problème d'envoi d'email

Par DexX, il y a 13 ans


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

12 réponses

Kamduras, il y a 13 ans

Salut, tu as quoi dans ton fichier email.php dans /config ?

Kamduras, il y a 13 ans

Autant pour moi, j'avais pas vu, tu es sur serveur ou sur localhost ?

DexX, il y a 13 ans

Je suis sur serveur. Hébergement 1and1, donc je ne sais pas si cela peut venir de ça.

zenkiai, il y a 13 ans

Question bête, tu as vérifié des courriers indésirables.. Au cas où..

DexX, il y a 13 ans

Oui oui j'ai vérifié ^^

DexX, il y a 13 ans

Bonjour,

Personne pour m'aider ?

zenkiai, il y a 13 ans

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; ?>
zenkiai, il y a 13 ans

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

DexX, il y a 13 ans

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.

Kamduras, il y a 13 ans

Essaye de remplancer ca,

$mail = new CakeEmail();

par ca, meme si je doute que ce soit ca, on sait jamais.

$mail = new CakeEmail(default);
Cerrer, il y a 13 ans

Moi quand je met ce que tu propose, Kamburas, j'ai une erreur...

Cerrer, il y a 13 ans

Est-ce que la mise en cache pourrait interférer avec le fonctionnement de l'envoi de mail ?