Bonjour,
en ce moment je fais un site avec CakePHP 3 où pour confirmer l'inscription il faut confirmer son compte par mais.
Donc j'ai essayé d'envoyer un mail en SMTP sur Maildev :
app.php
'EmailTransport' => [
'default' => [
'className' => 'Mail',
// The following keys are used in SMTP transports
'host' => 'maildev',
'port' => 25,
'timeout' => 30,
'username' => '',
'password' => '',
'client' => null,
'tls' => null,
],
],
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'local@dev.fr',
'charset' => 'utf-8',
'headerCharset' => 'utf-8',
],
],
UsersController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Network\Email\Email;
class UsersController extends AppController{
public function register(){
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
$token = hash('sha512', sha1(rand() . uniqid() . time()));
$user = $this->Users->patchEntity($user, $this->request->data);
$user->verification_token = $token;
$email = new Email(['EmailTransport' => 'default']);
$email
->emailFormat('text')
->to('olivier.dupuy74@htomail.fr')
->from('contact@kreatik-stduio.com')
->subject('Confirmation LifeStucker');
$email->send('Test');
if($his->Users->save($user){
// Bien inscrit
} else {
// Erreur
}
}
}
}
Et j'ai l'erreur Cannot send email, transport was not defined. Did you call transport() or define a transport in the set profile?
Merci d'avance
Salut,
Le soucis se trouve dans ta config notament sur le block EmailTransport
et Email
. Garde la configuration de default
, du block EmailTransport
, telle quelle et crée toi une config pour le dev :
config/app.php :
'EmailTransport' => [
'default' => [
'className' => 'Mail',
// The following keys are used in SMTP transports
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => '',
'password' => '',
'client' => null,
'tls' => null,
],
'dev' => [
'className' => 'Smtp',
// The following keys are used in SMTP transports
'host' => '127.0.0.1',
'port' => 1025,
'timeout' => 30,
'client' => null,
'tls' => null,
],
],
'Email' => [
'default' => [
'transport' => 'dev',
'from' => 'no-reply@tonmail.fr',
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
],
],
Ensuite dans le block Email
, tu choisis ton transport ici c'est dev
. Il ne te reste plus qu'a envoyer un mail :
$email = new Email('default');
$email->from(['test@test.com' => 'Nom exp'])
->to('bibi@test.com')
->subject('Coucou')
->send('ça fonctionne');
Pense juste à switcher la config du transport quand tu passes en prod, si non tu auras des erreurs...
Bon courage.
Bonsoir.
new Email(['EmailTransport' => 'default']);
Pourrais-tu me dire où tu as vu cette syntaxe ?
J'ai eu beau regardé dans la doc, je ne l'ai pas vue.
Si tu veux utiliser une configuration de transport précis, il te suffit de faire comme-ça :
$email = new Email();
$email
->transport('default')
/* etc... */
Ensuite, tu parles de SMTP, mais tu configures un className
Mail au lieu d'un className
Smtp.
@Lartak je ne sais pas mais je crois que je l'ai inventé ^^
@connected merci, ca merche nickel !