Jump to content

Champ replyto avec email du contact et non email de la boutique - formulaire de contact


Recommended Posts

Bonjour,

Je suis sur Prestashop 1.6.1.4 avec le multiboutique.
Lorsqu'un visiteur ou client envoi un message depuis le formulaire de contact il reçoit bien le message de retour et je reçois bien le message sur le mail de la boutique.
Le champ from est bien l'email de la boutique mais le champs reply_to est aussi celui de la boutique au lieu pour ma logique d'être celui du contact qui à envoyé le message ($contact->email il me semble).
Lorsque l'on clique sur répondre le champ email est vide sur Thunderbird mais dans la source du mail il y a bien replyto à l'email de la boutique,
Si je récupère les email sur notre système de ticketing le mail de réponse est celui de la boutique et cela oblige à modifier à chaque mail reçu.
Je souhaite donc arriver à juste avoir le mail du contact du message dans le formulaire pour le champ replyto.

Dans le fichier ContactController.php j'ai cru qu'il fallait modifier le $from (de la 3eme lignes) par $contact->email mais cela ne change rien.

if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
                            $var_list, $contact->email, $contact->name, null, null,
                                    $file_attachment, null,    _PS_MAIL_DIR_, false, null, null, $from) ||
                                !Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment, null, _PS_MAIL_DIR_, false, null, null, $contact->email)) {
                            $this->errors[] = Tools::displayError('An error occurred while sending the message.');

Merci pour votre aide.

Link to comment
Share on other sites

 

C'est pourtant bien le dernier paramètre de la fonction Send()

    public static function Send($id_lang, $template, $subject, $template_vars, $to,
        $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
        $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
    {

Prestashop verifie sa validité sinon il utilise le paramètre from

            if (!($reply_to && Validate::isEmail($reply_to))) {
                $reply_to = $from;
            }

            if (isset($reply_to) && $reply_to) {
                $message->setReplyTo($reply_to);
            }

 

  • Like 1
Link to comment
Share on other sites

Merci pour ton retour Eolia, donc en modifiant le null, $from de la fin de la troisième ligne par $contact->email, $contact->email -
bcc devrait être l'email du contact et replyto l'email du contact ?
Si ça ne fonctionne pas cela peut être du à quoi ? j'ai vérifié et je n'ai pas d'override Mail.php, Mailsend.php et ContactController.php :(

Link to comment
Share on other sites

17 hours ago, Eolia said:

 

C'est pourtant bien le dernier paramètre de la fonction Send()


    public static function Send($id_lang, $template, $subject, $template_vars, $to,
        $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
        $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
    {

Prestashop verifie sa validité sinon il utilise le paramètre from


            if (!($reply_to && Validate::isEmail($reply_to))) {
                $reply_to = $from;
            }

            if (isset($reply_to) && $reply_to) {
                $message->setReplyTo($reply_to);
            }

 

Hello Eolia,

Je pense avoir trouvé mon problème, dans classe/Mail.php j'ai 

/* Send mail */
			$message->setReplyTo($from);
			$from = Configuration::get('PS_SHOP_EMAIL');
            $send = $swift->send($message, $to_list, new Swift_Address($from, $from_name));
            $swift->disconnect();

            ShopUrl::resetMainDomainCache();

Je ne pense pas normal le bout de code - $message->setReplyTo($from); -
Je n'arrive pas à voir si il y est de base ou si il y a eu une modification.

Link to comment
Share on other sites

Effectivement, votre code a été bidouillé. Le code original est 

            /* Send mail */
            $send = $swift->send($message, $to_list, new Swift_Address($from, $from_name));
            $swift->disconnect();

https://www.prestashop.com/fr/file/prestashop1.6.1.4.zip-0/download?token=MDy6_eDO

https://www.prestashop.com/fr/versions?version=1.6&sort_by=field_version_number_value&sort_order=DESC

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Eolia said:

Effectivement, votre code a été bidouillé. Le code original est 


            /* Send mail */
            $send = $swift->send($message, $to_list, new Swift_Address($from, $from_name));
            $swift->disconnect();

https://www.prestashop.com/fr/file/prestashop1.6.1.4.zip-0/download?token=MDy6_eDO

https://www.prestashop.com/fr/versions?version=1.6&sort_by=field_version_number_value&sort_order=DESC

Si j'enlève le - $from = Configuration::get('PS_SHOP_EMAIL'); - les emails envoyés du formulaire auront le mail du contact en from ce qui bloquera l'envoi par mailjet and co.
Je pense il faut que je garde ce dernier pour bien avoir le from avec le mail de la boutique.
Je viens de tester en enlevant juste - $message->setReplyTo($from); - et tout à l'air ok, from est le mail de la boutique et replyto le mail du contact du formulaire.

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...