apositivo Posted April 20, 2015 Share Posted April 20, 2015 Buenas, saludos cordiales a toda la comunidad prestashop ! el presente es para realizar una consulta ... creo que diriamos avanazada... en la carpeta classes tenemos el archivo Mail.php , el cual realiza la logica para enviar un correo ( ejemplo el de bienvenida), en dicha clase tenemos el metodo 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) { ....} el cual en base a los parametro pasado construye la estrutura del objeto con la libreria swift al final de ese metodo tenemos lo siguiente : /* Send mail */ $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); ShopUrl::resetMainDomainCache(); donde la variable $message es un objeto tiene mucha data , to, from, reply to , entre otros.... tambien contien el mensaje en formato en html que se enviara al cliente . . . como puedo obtener dicho contenido de esa vaiable que tiene el html.. ejemplo $message->body , $message->content aparentemente esta en el campo data de algun arreglo de ese objeto, pero como puedo acceder a el... aqui le dejo parte de la estructura de dicho objeto Swift_Message Object ( [mimeWarning:protected] => This is a message in multipart MIME format. Your mail client should not be displaying this. Consider upgrading your mail client to view this message correctly. [libVersion:protected] => 3.3.2 [references:protected] => Array ( [parent] => Array ( [alternative] => Swift_Message_Part Object ( [headers] => Swift_Message_Headers Object ( [emailContainingHeaders:protected] => Array ( [0] => To [1] => From [2] => Reply-To [3] => Cc [4] => Bcc [5] => Return-Path [6] => Sender ) [encoding:protected] => B [charset:protected] => iso-8859-1 [headers:protected] => Array ( [Content-Type] => multipart/alternative [Content-Transfer-Encoding] => 7bit ) [lowerHeaders:protected] => Array ( [content-type] => multipart/alternative [content-transfer-encoding] => 7bit ) [attributes:protected] => Array ( [content-type] => Array ( [charset] => [format] => [boundary] => _=_swift-7768673955534577b6be382.72631708_=_ ) ) [forceEncoding:protected] => [language:protected] => en-us [cached:protected] => Array ( [content-type] => multipart/alternative; boundary="_=_swift-7768673955534577b6be382.72631708_=_" [content-transfer-encoding] => 7bit ) [LE:protected] => ) [data:protected] => [wrap:protected] => 1000 [children:protected] => Array ( [5534577b650c8] => Swift_Message_Part Object ( [headers] => Swift_Message_Headers Object ( [emailContainingHeaders:protected] => Array ( [0] => To [1] => From [2] => Reply-To [3] => Cc [4] => Bcc [5] => Return-Path [6] => Sender ) [encoding:protected] => B [charset:protected] => iso-8859-1 [headers:protected] => Array ( [Content-Type] => text/html [Content-Transfer-Encoding] => 8bit ) [lowerHeaders:protected] => Array ( [content-type] => text/html [content-transfer-encoding] => 8bit ) [attributes:protected] => Array ( [content-type] => Array ( [charset] => utf-8 [format] => ) ) [forceEncoding:protected] => [language:protected] => en-us [cached:protected] => Array ( [content-type] => text/html; charset=utf-8 [content-transfer-encoding] => 8bit ) [LE:protected] => ) [data:protected] => ----------> este es el contenido en HTML que quisiera sacar del objeto $message --------->>>> Hola Pepe Detalles de su cuenta Gracias por crear una cuenta de cliente en Tusitio.com. Estos son sus datos de acceso: Dirección de E-mail: [email protected] Clave: 123456 Consejos de Seguridad: Mantenga los datos de su cuenta en un lugar seguro. No comparta los detalles de su cuenta con otras personas. Cambie su clave regularmente. Si sospecha que alguien está usando ilegalmente su cuenta, avísenos inmediatamente. Ahora podrá realizar pedidos en nuestra tienda: Tutienda.com Link to comment Share on other sites More sharing options...
shacker Posted April 21, 2015 Share Posted April 21, 2015 los parametros gift los mandan los controladores. Por ejemplo, al aceptar un pago, paymentexecution envia los parametros para swift y este envia el mail. fijate el authconroller que esta en controllers, front y busca esta funcion protected function sendConfirmationMail(Customer $customer) { if (!Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) return true; return Mail::Send( $this->context->language->id, 'account', Mail::l('Welcome!'), array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname ); } Link to comment Share on other sites More sharing options...
apositivo Posted April 22, 2015 Author Share Posted April 22, 2015 (edited) hola shacker, saludos cordiales, gracias por responder. correcto , alli estoy claro del authcontroller protected function sendConfirmationMail(Customer $customer) { if (!Configuration::get('PS_CUSTOMER_CREATION_EMAIL')) return true; return Mail::Send( $this->context->language->id, 'account', Mail::l('Welcome!'), array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname ); pero si revisamos, el contenido por ejemplo del correo (que aparentemente se encuentra en la variable $message), se arma como tal en el metodo send en la parte.... /* Create mail && attach differents parts */ $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME').'] '.$subject); $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo_mail.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo_mail.jpg'))) : ((file_exists(_PS_IMG_DIR_.'logo.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo.jpg'))) : ''); $templateVars['{shop_name}'] = Tools::safeOutput(Configuration::get('PS_SHOP_NAME')); $templateVars['{shop_url}'] = Tools::getShopDomain(true, true).__PS_BASE_URI__; $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $templateVars)), 'decorator'); if ($configuration['PS_MAIL_TYPE'] == 3 || $configuration['PS_MAIL_TYPE'] == 2) $message->attach(new Swift_Message_Part($templateTxt, 'text/plain', '8bit', 'utf-8')); if ($configuration['PS_MAIL_TYPE'] == 3 || $configuration['PS_MAIL_TYPE'] == 1) $message->attach(new Swift_Message_Part($templateHtml, 'text/html', '8bit', 'utf-8')); if ($fileAttachment && isset($fileAttachment['content']) && isset($fileAttachment['name']) && isset($fileAttachment['mime'])) $message->attach(new Swift_Message_Attachment($fileAttachment['content'], $fileAttachment['name'], $fileAttachment['mime'])); y parece que es alli donde se arma el HTML del email... (donde anexa la plantilla correspondiente) ----------> este es el contenido en HTML que quisiera sacar del objeto $message --------->>>> Hola Pepe Detalles de su cuenta Gracias por crear una cuenta de cliente en Tusitio.com.Estos son sus datos de acceso:Dirección de E-mail: [email protected]Clave: 123456 Consejos de Seguridad: Mantenga los datos de su cuenta en un lugar seguro. No comparta los detalles de su cuenta con otras personas. Cambie su clave regularmente. Si sospecha que alguien está usando ilegalmente su cuenta, avísenos inmediatamente. Ahora podrá realizar pedidos en nuestra tienda: Tutienda.com Edited April 22, 2015 by apositivo (see edit history) Link to comment Share on other sites More sharing options...
apositivo Posted April 23, 2015 Author Share Posted April 23, 2015 (edited) shacker ? Edited April 24, 2015 by apositivo (see edit history) Link to comment Share on other sites More sharing options...
apositivo Posted April 24, 2015 Author Share Posted April 24, 2015 ? Link to comment Share on other sites More sharing options...
shacker Posted April 25, 2015 Share Posted April 25, 2015 ese es el archivo account.html, que esta dentro de la carpeta mails. solo se pasan un par variables ahi, ya que el archivo es html, te lo pego aqui HOLA {FIRSTNAME} {LASTNAME},GRACIAS POR CREAR UNA CUENTA DE CLIENTE EN {SHOP_NAME}. DETALLES DE SU CUENTA EN {SHOP_NAME} Estos son sus datos de acceso:Dirección email: {email}Contraseña: {passwd} CONSEJOS DE SEGURIDAD: Mantenga los datos de su cuenta en un lugar seguro. No comparta los detalles de su cuenta con otras personas. Cambie su clave regularmente. Si sospecha que alguien está usando ilegalmente su cuenta, avísenos inmediatamente. Ahora podrá realizar pedidos en nuestra tienda: {shop_name} Link to comment Share on other sites More sharing options...
apositivo Posted April 26, 2015 Author Share Posted April 26, 2015 hola shacker saludos, si amigo, en eso estoy claro, pero el detalle es que quiero capturar cualquier tipo de mensaje ya armado en base a la acción realizada ( registro en la tienda. , cambio de status en las ordenes, mensajes al clientes), todos ellos pasan por el archivo Mail.php que contiene el metodo public static function Send, es alli donde se arma ese contenido ( con las correspondientes plantillas de account.html, refound.html, payment.html, o cualquier otra ) en base a la accion que se toma. eso es lo que necesito, el contenido HTML ya armado en el metodo Send. que puede ser cualquier contenido que se le envia al cliente. Link to comment Share on other sites More sharing options...
apositivo Posted April 26, 2015 Author Share Posted April 26, 2015 (edited) se que el contenido esta en en el objeto Swift_Message Object , pero no se si prestashop tiene alguna manera de lograr acceder a dicho contenido de manera mas optima. estoy leyendo la referencia dde la classe Swift_Message me encontre con Swift_Message::getBody ( ) voy a seguir leyendo Edited April 26, 2015 by apositivo (see edit history) Link to comment Share on other sites More sharing options...
shacker Posted May 18, 2015 Share Posted May 18, 2015 puedes recorrer el array directamente con smarty y de ahi sacar lo que te interese Link to comment Share on other sites More sharing options...
apositivo Posted May 21, 2015 Author Share Posted May 21, 2015 gracias por esa opcion shacker, sigo evaluando ya que es en en el archivo Mail.php , en el metodo public static function Send. pero voy viendo la luz al final del tunel. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now