Jump to content

[SOLUCIONADO] Enviar EMAIL A Los Clientes Después De Que Se Realice El Pedido


alguien22

Recommended Posts

Lo que he hecho es crear una nueva plantilla "algo.html" en el directorio "/mails/es/" y en "PEDIDOS ---> Estados de pedidos" he agregado un nuevo estado, marcando la casilla "Enviar un e-mail al cliente cuando una orden cambie a este estado" y he seleccionado mi plantilla pero no le llega al cliente esa plantilla.

 

Un Saludo

Link to comment
Share on other sites

No tengo ninguna carpeta "mails" dentro de /themes/default-bootstrap/

 

Todos las plantillas "mails" están dentro de la carpeta "/mails/es/" "/mails/en/" "/mails/ca/" etc...

 

La manera de sobreescribir esa carpeta y sus contenidos es añadirla en la carpeta de tu tema, por eso te lo decia. Hay muchas plantillas que la incluyen por defecto

Link to comment
Share on other sites

Eso ya lo pensé, pero lo que quiero es que se envie un nuevo email creado por mí a parte.

 

Lo que he pensado es hacerlo con código, por ejemplo: en el fichero "payment_execution.tpl" agregar un input oculto(<input name="emaill" id="emaill" class="emaill" readonly="readonly" value="{$cookie->email}" type="email" style="display: none;"/>) en el formulario que recoga el email del usuario y después cuando se clickea en el botón de "Confirmar Pedido" te lleve también al fichero creado por ti en /mails/es/datos.php

 

Dentro del fichero "datos.php" está este codigo:

 

<?php

    $email_usuario = $_POST['emaill'];
    $datos = '<body>
                <div>
                    <h1>Prueba de Envio</h1>
                </div>
            </body>';
    $from = $email_usuario;
    $subject = 'Prueba';
    $headers = "From: ".$from."\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    mail($from,$subject,$datos,$headers);

?>

Edited by ctb (see edit history)
Link to comment
Share on other sites

                    Hook::exec('actionValidateOrder', array(
                        'cart' => $this->context->cart,
                        'order' => $order,
                        'customer' => $this->context->customer,
                        'currency' => $this->context->currency,
                        'orderStatus' => $order_status
                        Mail::Send("[email protected]","Datos","Prueba de Envio")
                    ));

 

He añadido la línea del Mail pero no le manda el email al cliente...

Link to comment
Share on other sites

Es que ahi no va, esta parte es la que te interesa

	if (Validate::isEmail($this->context->customer->email))
							Mail::Send(
								(int)$order->id_lang,
								'order_conf',
								Mail::l('Order confirmation', (int)$order->id_lang),
								$data,
								$this->context->customer->email,
								$this->context->customer->firstname.' '.$this->context->customer->lastname,
								null,
								null,
								$file_attachement,
								null, _PS_MAIL_DIR_, false, (int)$order->id_shop
							); 
Link to comment
Share on other sites

Muchísimas Gracias Amigo, me has solucionado un problema que llevaba 3 días intentado solucionarlo

 

Ahora lo que intento es que lo que pongo en la línea:

 

              Mail::l('Gracias', (int)$order->id_lang),

se traduzca como:

 

              Mail::l('Thanks', (int)$order->id_lang),

cuando reciba el email el cliente

 

Es decir, se traduzca en el idioma en el que esté la página

 

Un Saludo

Edited by ctb (see edit history)
Link to comment
Share on other sites

He mirado lo que has dicho, pero al final no era lo que decía y he tomado la decisión de poner esto:

 

if ((int)$order->id_lang == 1)    //Este es el id del lenguage en Español
                            {
                                Mail::Send(
                                    (int)$order->id_lang,
                                    'datos',
                                    Mail::l('Datos', (int)$order->id_lang),
                                    $data,
                                    $this->context->customer->email,
                                    $this->context->customer->firstname.' '.$this->context->customer->lastname,
                                    null,
                                    null,
                                    $file_attachement,
                                    null, _PS_MAIL_DIR_, false, (int)$order->id_shop
                                );
                            }

if ((int)$order->id_lang == 4)    //Este es el id del idioma en Ingles
                            {
                                Mail::Send(
                                    (int)$order->id_lang,
                                    'data',
                                    Mail::l('Data', (int)$order->id_lang),
                                    $data,
                                    $this->context->customer->email,
                                    $this->context->customer->firstname.' '.$this->context->customer->lastname,
                                    null,
                                    null,
                                    $file_attachement,
                                    null, _PS_MAIL_DIR_, false, (int)$order->id_shop
                                );
                            }

 

Y me funciona perfectamente.

 

Muchas Gracias Por Todo

 

Un Saludo

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