Bonjour,

J'essaie de mettre en place un formulaire de contact sous cakephp 3 mais je rencontre quelques soucis avec la configuration. Je veux envoyer les emails depuis mon adresse personnelle et donc j'ai configurer les differents fichier comme ceci :

php.ini

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.mail.yahoo.fr
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = monadress@youhoo.fr

app.php

'EmailTransport' => [
        'default' => [
            'className' => 'Mail',
            // The following keys are used in SMTP transports
            'host' => 'smtp.mail.yahoo.com',
            'port' => 465,
            'timeout' => 30,
            'username' => 'me@me.fr',
            'password' => 'secret',
            'client' => null,
            'ssl' => true,
            'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
        ],
        'contact' => [
            'className' => 'Mail',
            // The following keys are used in SMTP transports
            'host' => 'smtp.mail.yahoo.fr',
            'port' => 465,
            'timeout' => 50,
            'username' => 'monlogin sans @youhoo.fr',
            'password' => 'monmdp',
            'client' => null,
            'ssl' => true,
        ],
    ],

    'Email' => [
        'contact' => [
            'transport' => 'contact',
            'from' => 'monadresse@youhoo.fr',
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
    ],

Dans mon controller

$email = new Email('contact');
        $email->from(['monadresse@youhoo.fr' => 'Nom exp'])
            ->to('quelqu'un@test.fr')
            ->subject('Coucou')
            ->send('ça fonctionne');

Et donc avec ces parametres la, j'ai une erreur qui me dit ' Could not send email: mail(): SMTP server response: 530 5.7.1 Authentication required ' alors que j'ai rentré mes id et motdepasse donc je ne comprends pas trop...

4 réponses


kinkaz
Réponse acceptée

Bonjour,

Plusieurs pistes à explorer :

1) Tu n'as pas besoin de modifier quelque chose dans ton php.ini à mon avis, tu n'envoies pas directement avec la fonction mail de PHP, mais tu passes par la classe Email de CakePHP. En tout cas je n'ai jamais touché le php.ini et ça a toujours fonctionné :-) [EDIT : de plus, tu mets smtp.mail.yahoo.fr dans ton php.ini et .com dans cake]
2) https://fr.aide.yahoo.com/kb/Yahoo-Mail-POP-settings-sln4724.html indique que tu dois te log avec ton adresse e-mail complète adresse@domaine.com (tu n'as pas l'air d'inclure le domaine).
3) Tu as essayé de mettre le port 587 à la place de 465 ? D'habitude pour ce genre de choses (timeout) c'est un problème d'adresse et/ou de port.

Bonjour.
Si tu utilises le transport SMTP, il te faut utiliser le classname Smtp et non Mail.

Effectivement, j'ai rectifier ça mais maintenant il me dit " SMTP timeout"

Bonjour,

En effet le php.ini n'a pas eu besoin d'etre modifié, pour le log j'ai bien utilisé mon adresse complete. Ce qui allait pas et que j'ai rectifié c'était le port que j'ai remplacé comme tu as dis et j'ai aussi du autoriser aussi bien le ssl que le tls (voir code).

'contact' => [
            'className' => 'Smtp',
            // The following keys are used in SMTP transports
            'host' => 'smtp.mail.yahoo.fr',
            'port' => 587,
            'timeout' => 30,
            'username' => 'monAdresse@yahoo.fr',
            'password' => 'monMotDePasse',
            'client' => null,
            'ssl' => true,
            'tls' => true,
        ],

Merci de ton aide