THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je souhaite envoyer un mail au client par un click sur un bouton coté admin
J'ai regardé comment été fait le script pour tester la config email
mais je n'arrive pas à l'appliquer

je fais passer le customer_id par ajax ....

   public function SendEmailUpdate(){
        // Check current user authorization
        if (null !== $response = $this->checkAuth(array(), array('monModule'), AccessManager::UPDATE)) {
            return $response;
        }

        $store_email = ConfigQuery::read('store_email');
        $storeName = ConfigQuery::read('store_name', '');

        $json_data = array(
            "success" => false,
            "message" => "",
        );

        if ($store_email) {
            $message = MessageQuery::create()
                ->filterByName('confirmation_update')
                ->findOne();

            if (false === $message) {
                throw new \Exception("Failed to load message 'confirmation_update'.");
            }

            $customerId = $this->getRequest()->get("customer_id");
            $customer = CustomerQuery::create()->findPk($customerId);

            $this->parser->assign('customer_id', $customerId);

            $lang = LangQuery::create()->findPk($customer->getLang())->getLocale();
            $message->setLocale($lang);

            $customerEmail = $customer->getEmail();
            $customerFirstname = $customer->getFirstname();
            $customerLastname = $customer->getLastname();

            $instance = \Swift_Message::newInstance()
                ->addTo($customerEmail, $customerFirstname." ".$customerLastname)
                ->addFrom($store_email, ConfigQuery::read('store_name'))
            ;

            // Build subject and body

            $message->buildMessage($this->parser, $instance);

            try {
                $this->mailer->send($instance);
                $json_data["success"] = true;
                $json_data["message"] = $this->getTranslator()->trans("An email was sent to the client: %email%", array("%email%" => $customerEmail));
            } catch (\Exception $ex) {
                $json_data["message"] = $ex->getMessage();
            }
        } else {
            $json_data["message"] = $this->getTranslator()->trans("You have to configure your store email first !");
        }

        $response = JsonResponse::create($json_data);

        return $response;
    }

mais j'ai une erreur avec le parser
je ne comprends pas comment faire, je ne trouve pas d'exemple d’envoi email (avec un message defini messageQuery) sans un événement par un simple click


Grand Merci

Last edited by Debutant (05-12-2015 19:52:44)

Offline


Tu crées un controleur dands ton module, une méthode qui envoie le mail dans ce controleur, et une route qui pointe vers cette méthode.
Après peu importe comment tu l'appelle, ajax ou pas.

Indice : dans MailerFactory, tu as une méthode bien pratique : sendEmailToCustomer().

mais j'ai une erreur avec le parser

Laquelle ? C'est utile de donner le message d'erreur, voire la trace de l'exception, qui, crois le ou non, a un sens !


OpenStudio Toulouse

Offline


Merci Roadster31
je vais suivre ton indice smile
en tout cas, grand merci pour ton aide si précieuse

Offline


En connectant mes deux neurones, maintenant ça marche smile

Grand Merci Roadster31

Last edited by Debutant (05-12-2015 19:52:17)