Jump to content

Nouveau MDP envoyé jamais reçu


Recommended Posts

Bonjour à toute la communauté,

ma cliente m'a fait part d'un problème que je n'arrive pas à résoudre.
En tant qu'admins, elle et moi nous connectons au BO sans problème.

En revanche, sur le front, lorsque j'essaie de me connecter avec deux de mes adresses mail test enregistrées depuis longtemps, l'authentification est un échec.
Si j'essaie de créer un nouveau mot de passe, je reçois bien la demande avec le lien sur lequel cliquer pour confirmation.
Je clique et suis redirigé vers une page m'annonçant que le mdp a été renouvelé et envoyé à cette même adresse... mais n'arrive jamais!

Une idée d'où peut provenir le problème ?
D'avance merci.

Link to comment
Share on other sites

Déjà, là il y a un problème

Citation

En revanche, sur le front, lorsque j'essaie de me connecter avec deux de mes adresses mail test enregistrées depuis longtemps, l'authentification est un échec.

 

Link to comment
Share on other sites

En tout cas:

- Au niveau des Logs mails: j'ai bien la confirmation de l'envoi des deux mails (Demande de nouveau mdp et Envoi d'un nouveau mdp)
- Rien dans les spams.
- Pour l'hébergeur (OVH): il était momentanément indisponible mais maintenant qu'il semble de nouveau fonctionnel je ne sais pas où chercher un message d'erreur chez eux!
 

C'est quand même dingue que le premier mail passe et pas le second.
Y-a-t-il un endroit dans les tpl où je peux fouiller pour voir si la syntaxe est bonne ?

D'avance merci.

Link to comment
Share on other sites

@Eolia: j'ai eu un technicien d'OVH au téléphone.
On a fait quelques modifications dont une majeure, la mise à jour du PHP en 5.6, dans le répertoire mail>fr le fichier index.php était absent et on y a copié celui du dossier mail>en mais tout ceci n'a rien changé.

Au niveau des serveurs mails, il constate bien le départ du premier mail mais pas du second ce qui lui fait penser que le problème viendrait du thème et plus précisément du fichier password.tpl

Je vous copie/colle le code qui me semble correspondre à l'envoi du second mail des fois qu'une erreur vous apparaîtrait, je suis trop novice:

{if isset($confirmation) && $confirmation == 1}
<p class="alert alert-success">{l s='Your password has been successfully reset and a confirmation has been sent to your email address:'} {if isset($customer_email)}{$customer_email|escape:'html':'UTF-8'|stripslashes}{/if}</p>
{elseif isset($confirmation) && $confirmation == 2}
<p class="alert alert-success">{l s='A confirmation email has been sent to your address:'} {if isset($customer_email)}{$customer_email|escape:'html':'UTF-8'|stripslashes}{/if}</p>
{else}
<p>{l s='Please enter the email address you used to register. We will then send you a new password. '}</p>
<form action="{$request_uri|escape:'html':'UTF-8'}" method="post" class="std" id="form_forgotpassword">
	<fieldset>
		<div class="form-group">
			<label for="email">{l s='Email address'}</label>
			<input class="form-control" type="email" id="email" name="email" value="{if isset($smarty.post.email)}{$smarty.post.email|escape:'html':'UTF-8'|stripslashes}{/if}" />
		</div>
		<p class="submit">
            <button type="submit" class="btn btn-default button button-medium"><span>{l s='Retrieve Password'}<i class="icon-chevron-right right"></i></span></button>
		</p>
	</fieldset>
</form>
{/if}

D'avance merci

Link to comment
Share on other sites

Rien à voir avec le tpl (celui-ci n'envoie aucun mail)

C'est dans le contrôleur associé que cela se passe:

        } elseif (($token = Tools::getValue('token')) && ($id_customer = (int)Tools::getValue('id_customer'))) {
            $email = Db::getInstance()->getValue('SELECT `email` FROM '._DB_PREFIX_.'customer c WHERE c.`secure_key` = \''.pSQL($token).'\' AND c.id_customer = '.(int)$id_customer);
            if ($email) {
                $customer = new Customer();
                $customer->getByemail($email);
                if (!Validate::isLoadedObject($customer)) {
                    $this->errors[] = Tools::displayError('Customer account not found');
                } elseif (!$customer->active) {
                    $this->errors[] = Tools::displayError('You cannot regenerate the password for this account.');
                } elseif ((strtotime($customer->last_passwd_gen.'+'.(int)Configuration::get('PS_PASSWD_TIME_FRONT').' minutes') - time()) > 0) {
                    Tools::redirect('index.php?controller=authentication&error_regen_pwd');
                } else {
                    $customer->passwd = Tools::encrypt($password = Tools::passwdGen(MIN_PASSWD_LENGTH, 'RANDOM'));
                    $customer->last_passwd_gen = date('Y-m-d H:i:s', time());
                    if ($customer->update()) {
                        Hook::exec('actionPasswordRenew', array('customer' => $customer, 'password' => $password));
                        $mail_params = array(
                            '{email}' => $customer->email,
                            '{lastname}' => $customer->lastname,
                            '{firstname}' => $customer->firstname,
                            '{passwd}' => $password
                        );
                        if (Mail::Send($this->context->language->id, 'password', Mail::l('Your new password'), $mail_params, $customer->email, $customer->firstname.' '.$customer->lastname)) {
                            $this->context->smarty->assign(array('confirmation' => 1, 'customer_email' => $customer->email));
                        } else {
                            $this->errors[] = Tools::displayError('An error occurred while sending the email.');
                        }
                    } else {
                        $this->errors[] = Tools::displayError('An error occurred with your account, which prevents us from sending you a new password. Please report this issue using the contact form.');
                    }
                }
            } else {
                $this->errors[] = Tools::displayError('We cannot regenerate your password with the data you\'ve submitted.');
            }
        }

Si vous avez le message disant que le mot de passe a été renvoyé, c'est que cette ligne là est passée:

if (Mail::Send($this->context->language->id, 'password', Mail::l('Your new password'), $mail_params, $customer->email, $customer->firstname.' '.$customer->lastname)) {
      $this->context->smarty->assign(array('confirmation' => 1, 'customer_email' => $customer->email));
                        }

Donc le mail a été envoyé pour Prestashop, curieux qu'ovh ne le voit pas...

Le template de ce mail existe bien sur votre site ?

/mails/fr/password.html et /mails/fr/password.txt

Link to comment
Share on other sites

/ mails/fr/password.html et /mails/fr/password.txt existent bien.

Pour le reste de votre message je ne sais pas ce que je dois faire.

Est-ce que je dois comparer ces lignes avec celles d'un fichier sur mon ftp ?
Si oui, où se trouve ce contrôleur associé svp ?

PS: je joins une capture de mes logs mails dans le BO de PS.
La dernière ligne signifie-t-elle que la ligne dont vous parlez ci-dessus est passée ?

capture-logs-mails-PS.jpg

Link to comment
Share on other sites

le controleur se trouve dans /controllers/front/

A priori, oui, le message est bien parti de Prestashop (pas forcément d'ovh) Par contre vous avez fait vite pour envoyer et recevoir le message et cliquer en 10 secondes^^

Link to comment
Share on other sites

2 hours ago, Eolia said:

Par contre vous avez fait vite pour envoyer et recevoir le message et cliquer en 10 secondes^^

Et encore je n'étais pas en forme :)

Ok donc j'ai comparé mon contrôleur au vôtre et il n'y a aucune différence, il date de l'installation du PS en 2016.

Après petite enquête des logs mails, il semblerait qu'une cliente ait demandé son renouvellement de mot de passe le 30 mai et quelques minutes après, a passé une commande.
On peut donc en déduire que cela fonctionnait à ce moment là.

Entre temps, les seules modifications que j'ai faites sur ce Presta son l'installation de votre module RGPD ainsi que la mise à jour de quelques modules du genre et de mémoire: chèques, alertes e-mails, bloc CMS, bloc contact, bloc info clients et d'autres... des modules fournis par PS il me semble.

Link to comment
Share on other sites

Merci du retour Eolia.
J'ai donc enlevé le terme mot de passe dans le template et ai essayé une nouvelle demande mais le second mail n'arrive toujours pas.

C'est à n'y rien comprendre :/

Et si je modifie le mail wanadoo.fr ?
Peut-être qu'en leur créant une adresse comme [email protected] sur OVH cela ne bloquerait plus!

Je vais essayer.
en tout cas merci pour les idées ;)

Link to comment
Share on other sites

Je vais les recontacter.

Pour info, j'ai créé l'adresse [email protected] que j'ai ajoutée dans le bloc "Alertes e-mails".
Mais lors d'un test de demande de nouveau mot de passe, toujours pareil: 1er mail reçu, 2d jamais!

Edit: je m'aperçois que dans le module "Alertes e-mail" ce n'est pas le mail utilisé pour recevoir le nouveau mot de passe!

Edit 2: en fait je m'aperçois que je ne sais pas où modifier le mail qui envoie les notifications de mdp!

Edited by Sébastien Boureau (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...