Hello,

J'ai ce code qui me permets d'envoyer un email

function index(){
        if($this->request->is('post')){ // || $this->request->is('put')
            // Check if password are egual
            $data = $this->request->data;
            if($this->Contact->save($data)){

                App::uses('CakeEmail','Network/Email');
                $mail = new CakeEmail();
                // Confirmation
                $mail->from($this->Session->read('Site.email'))
                    ->to($data'Contact']'email'])
                    ->subject('Confirmation')
                    ->emailFormat('both')
                    ->template('emailconfirmation')
                    ->viewVars(array('firstname'=>$data'Contact']'firstname'],'lastname'=>$data'Contact']'lastname'],'content'=>$data'Contact']'content']))
                    ->send();

                //$mail = new CakeEmail();              
                // Sent to the 
                $mail->from($data'Contact']'email'])
                    ->to($this->Session->read('Site.email'))
                    ->subject('New message sent from your website contact page')
                    ->emailFormat('both')
                    ->template('emailform')
                    ->viewVars(array('firstname'=>$data'Contact']'firstname'],'lastname'=>$data'Contact']'lastname'],'content'=>$data'Contact']'content'],'email'=>$data'Contact']'email']))
                    ->send();
                $this->Session->setFlash("Your message have been successfully sent",'notif');
                unset($this->request->data);

                //$this->redirect(array('action'=>'index'));
            }else{
                $this->Session->setFlash("Your message could not be sent",'notif',array('type'=>'danger'));
            }       
        }
    }

Il a toujours bien fonctionner. Je veins de passer mes fichiers sur un serveur, préparer par un collègue. L'ensemble semble bien fonctionner jusqu'à ce que j'envoi un message via e formulaire.

Et.... mauvais message. Internal erreur

Could not send email.
Error: An Internal Error Has Occurred.
Stack Trace
    CORE/Cake/Network/Email/MailTransport.php line 51 ? MailTransport->_mail(string, string, string, string, null)
    CORE/Cake/Network/Email/CakeEmail.php line 1122 ? MailTransport->send(CakeEmail)
    APP/Controller/ContactsController.php line 21 ? CakeEmail->send()
    [internal function] ? ContactsController->index()
    CORE/Cake/Controller/Controller.php line 490 ? ReflectionMethod->invokeArgs(ContactsController, array)
    CORE/Cake/Routing/Dispatcher.php line 185 ? Controller->invokeAction(CakeRequest)
    CORE/Cake/Routing/Dispatcher.php line 160 ? Dispatcher->_invoke(ContactsController, CakeRequest, CakeResponse)
    APP/webroot/index.php line 114 ? Dispatcher->dispatch(CakeRequest, CakeResponse)

Avez-vous la moindre idée pourquoi ce message apparait alors qu'il ne le fait pas en local ou chez mes hébergeurs?
je pense notre propre serveur a surement un truc de ne pas actif.

Une idée?

Pour info

class EmailConfig {
    public $default = array(
        'transport' => 'Mail',
        'from' => 'pierre.xxxx@ccc.eeee.ch',
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8'
    );

/*
    public $smtp = array(
        'transport' => 'Smtp',
        'from' => array('pierre.xxxxx@ccc.eeee.ch' => 'ET - ST'),
        'host' => 'mail.eeee.ch',
        'port' => 25,
        'timeout' => 30,
        'username' => 'username',
        'password' => 'secret',
        'client' => null,
        'log' => false,
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8'
    );
*/
}

Milles mercis

3 réponses


pierrot10
Auteur
Réponse acceptée

Hello.
Sur mon serveur Ubuntu, j'ai installé postfix

#sudo apt-get install postfix

, et ca résolu mon problème
https://help.ubuntu.com/community/Postfix

Salut, je ne suis pas un expert mais sais-tu si ton hébergement dispose d'un serveur stmp.

Bonjour,

La première chose à faire avant de remettre en cause ton code est de faire un envoi bateau de mail sur ton serveur sur une page qui n'utilise pas cakephp.

<?php
// Destinataire
$to = "monmaildedestination@mail.fr";
// Sujet
$subject = 'test mail';

// Message
$message = '
<html>
  <head>
    <title>Test mail</title>
  </head>
  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="5">
      <tr>
        <td align="center">
          <p>
            test mail
          </p>
          <p>
            :) dance 
          </p>
        </td>
      </tr>
    </table>
  </body>
</html>
';

// Pour envoyer un mail HTML, l en-tête Content-type doit être défini
$headers = "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=utf-8" . "\r\n";

// En-têtes additionnels
$headers .= 'From: Mail de test <no-reply@monsitedetest.com>' . "\r\n";

// Envoie
$resultat = mail($to, $subject, $message, $headers);
?>

Si ce mail n'est pas reçu, c'est une erreur serveur. Si le mail est reçu il faudra alors te pencher sur ton code. Tu pourras commencer par regarder le contenu de $mail

++