{"id":7791,"date":"2023-09-29T04:55:31","date_gmt":"2023-09-29T04:55:31","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=7791"},"modified":"2023-09-29T04:55:31","modified_gmt":"2023-09-29T04:55:31","slug":"como-enviar-email-desde-un-modulo-en-prestashop-8","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/","title":{"rendered":"Como enviar email desde un m\u00f3dulo en PrestaShop 8"},"content":{"rendered":"<p>Enviar emails desde una aplicaci\u00f3n siempre es interesante pero m\u00e1s a\u00fan lo es en un entorno Ecommerce.<\/p>\n<p>En este caso, puedes enviar emails para notificar a tus clientes de tus novedades, dar la bienvenida o informar de los detalles de su pedido.<\/p>\n<p>Estos son ejemplos de emails que ya env\u00eda la plataforma <strong>PrestaShop,<\/strong> por ejemplo, pero es posible que necesites enviar email en otros contextos espec\u00edficos.<\/p>\n<p>En este tutorial vas a aprender como <strong>enviar un email desde un m\u00f3dulo en PrestaShop 8 usando PHP<\/strong> ya sea desde el archivo principal, desde un controlador de front o desde un controlador de back.<\/p>\n<h2>Funci\u00f3n para enviar email desde PrestaShop<\/h2>\n<p>Para enviar emails en <strong>PrestaShop<\/strong> hay varias opciones, puedes usar la funci\u00f3n mail de PHP, alguna clase ya predise\u00f1ada como PHPMailer o cualquier otra opci\u00f3n pero lo m\u00e1s recomendable es usar la funci\u00f3n Mail::send() que incluye el Core de <strong>PrestaShop<\/strong>.<\/p>\n<p>La clase Mail es una clase del Core de <strong>PrestaShop<\/strong> que extiende de ObjectModel y dentro de ella est\u00e1 el m\u00e9todo Send() que justamente permite enviar un correo electr\u00f3nico a un destinatario.<\/p>\n<p>Mail::send() tiene los siguientes par\u00e1metros:<\/p>\n<ul>\n<li>Identificador del idioma<\/li>\n<li>Nombre de la plantilla<\/li>\n<li>T\u00edtulo del mensaje<\/li>\n<li>Variables de la plantilla si tuviera<\/li>\n<li>Para quien va dirigido el mensaje, direcci\u00f3n de correo electr\u00f3nico<\/li>\n<li>Para quien va dirigido el mensaje, en este caso, el nombre del destinatario<\/li>\n<li>Email del destinatario<\/li>\n<li>Nombre del destinatario<\/li>\n<li>Archivo adjunto<\/li>\n<li>Modo smtp (deprecated)<\/li>\n<li>Ruta de la plantilla de email<\/li>\n<\/ul>\n<p>Esta funci\u00f3n tiene algunos par\u00e1metros m\u00e1s pero son opcionales y no los vamos a mencionar en este tutorial debido a su poco uso.<\/p>\n<p>Para darle un vistazo al resto de par\u00e1metros, puedes entrar en el fichero <em>classes\/Mail.php<\/em> y buscar el m\u00e9todo <em>send() <\/em>o ver lo que dice la documentaci\u00f3n oficial al respecto:<\/p>\n<p><a href=\"https:\/\/devdocs.prestashop-project.org\/1.7\/development\/mail\/\" target=\"_blank\" rel=\"noopener\">https:\/\/devdocs.prestashop-project.org\/1.7\/development\/mail\/<\/a><\/p>\n<h2>\u00bfC\u00f3mo crear la plantilla HTML personalizada?<\/h2>\n<p>Para el env\u00edo de email en <strong>PrestaShop<\/strong>, se requiere de una plantilla HTML y otra de texto plano con formato TXT.<\/p>\n<p>En tu m\u00f3dulo debes crear la subcarpeta mails\/ y dentro una subcarpeta por c\u00f3digo iso del idioma.<\/p>\n<p>Por ejemplo:<\/p>\n<ul>\n<li>Para el idioma espa\u00f1ol crear\u00edamos los siguientes ficheros: <em>mails\/es\/tuplantilla.html<\/em> y <em>mails\/es\/tuplantilla.txt<\/em><\/li>\n<li>Para el idioma ingl\u00e9s crear\u00edamos los siguientes ficheros: <em>mails\/en\/tuplantilla.html<\/em> y <em>mails\/en\/tuplantilla.txt<\/em><\/li>\n<\/ul>\n<p>F\u00edjate que lo \u00fanico que cambia en la ruta es el c\u00f3digo iso del idioma.<\/p>\n<p>Es importante crear 2 ficheros, uno con el contenido del email en formato HTML y otro en formato de texto plano. De esta forma, tendr\u00e1s en cuenta los formatos con los que se puede configurar el env\u00edo de email desde tu tienda <strong>PrestaShop<\/strong>.<\/p>\n<p>Para rellenar el contenido de estas plantillas yo te recomendar\u00eda que cojas una plantilla cualquiera de las que ya tiene <strong>PrestaShop<\/strong> en su carpeta mails\/ para copiarla y modificarla seg\u00fan tus intereses. De esta forma, mantienes el mismo formato para todos los emails de la tienda.<\/p>\n<h2>Llamada a la funci\u00f3n de env\u00edo de email desde el archivo principal de un m\u00f3dulo<\/h2>\n<p>Plant\u00e9ate la necesidad de enviar mensajes o newsletters a tus clientes desde la administraci\u00f3n de tu tienda.<\/p>\n<p>Un formulario donde puedas elegir a que grupo de clientes o a que cliente quieres enviar el mensaje, establecer un t\u00edtulo del mensaje y un contenido.<\/p>\n<p>Al pulsar el bot\u00f3n enviar, podr\u00edamos hacer la llamada a la funci\u00f3n Send() de la siguiente forma:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"re0\">$iso<\/span> <span class=\"sy0\">=<\/span> Language<span class=\"sy0\">::<\/span><span class=\"me2\">getIsoById<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">context<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">language<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">id<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$template<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'message'<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/file_exists\"><span class=\"kw3\">file_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/mails\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$iso<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$template<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'.txt'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <a href=\"http:\/\/www.php.net\/file_exists\"><span class=\"kw3\">file_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/mails\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$iso<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$template<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'.html'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"re0\">$subject<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'subject'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$message<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'message'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$id_customer<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'id_customer'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$customer<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Customer<span class=\"br0\">&#40;<\/span><span class=\"re0\">$id_customer<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$id_lang<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">id_lang<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"re0\">$template_vars<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>\n        <span class=\"st_h\">'{message}'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$message<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"st_h\">'{shop_name}'<\/span> <span class=\"sy0\">=&gt;<\/span> Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_NAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <a href=\"http:\/\/www.php.net\/mail\"><span class=\"kw3\">Mail<\/span><\/a><span class=\"sy0\">::<\/span><span class=\"me2\">Send<\/span><span class=\"br0\">&#40;<\/span>\n        <span class=\"re0\">$id_lang<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$template<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$subject<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$template_vars<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">email<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">firstname<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">lastname<\/span><span class=\"sy0\">,<\/span>\n        Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_EMAIL'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_NAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"kw4\">null<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"kw4\">null<\/span><span class=\"sy0\">,<\/span>\n        <a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/mails\/'<\/span>\n    <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>En primer lugar puedes identificar el c\u00f3digo iso del contexto y la definici\u00f3n de la plantilla de email que vamos a utilizar.<\/p>\n<p>Si el template existe y tiene definido sus 2 archivos, tanto el .html como el .txt, usando el m\u00e9todo est\u00e1tico getValue de la instancia Tools pas\u00e1ndole como par\u00e1metro el nombre de la variable POST, estamos recibiendo los 3 par\u00e1metros del formulario: A que cliente se va a enviar, el t\u00edtulo y el mensaje.<\/p>\n<p>Puedo crear una instancia del cliente elegido con el objetivo de sacar de la base de datos su nombre completo, email e idioma preferido.<\/p>\n<p>Con la variable $template_vars, simplemente estoy creando un array con las variables que deseo pasar a la plantilla de email con el fin de poder dinamizar el contenido en funci\u00f3n del mensaje que deseo enviar.<\/p>\n<p>Y, despu\u00e9s de definir las variables, ya puedes llamar al m\u00e9todo est\u00e1tico Send() de la instancia Mail con todos sus par\u00e1metros.<\/p>\n<h2>Llamada a la funci\u00f3n de env\u00edo de email desde un controlador de un m\u00f3dulo<\/h2>\n<p>Si te ves en la necesidad de enviar un email desde un controlador de un m\u00f3dulo, ya sea un controlador de back o de front, d\u00e9jame decirte que debes hacerlo de la misma manera que para el archivo principal.<\/p>\n<p>Solo hay dos detalles que debes tener en cuenta y son las rutas de los ficheros del condicional que verifica si las plantillas existen y el \u00faltimo par\u00e1metro de la funci\u00f3n Send() que hace referencia tambi\u00e9n a la ruta donde est\u00e1n ubicadas las plantillas de email.<\/p>\n<p>Teniendo en cuenta el c\u00f3digo de ejemplo anterior, en el contexto de un controlador de un m\u00f3dulo quedar\u00eda as\u00ed:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"re0\">$iso<\/span> <span class=\"sy0\">=<\/span> Language<span class=\"sy0\">::<\/span><span class=\"me2\">getIsoById<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">context<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">language<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">id<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$template<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'message'<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/file_exists\"><span class=\"kw3\">file_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/..\/..\/mails\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$iso<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$template<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'.txt'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <a href=\"http:\/\/www.php.net\/file_exists\"><span class=\"kw3\">file_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/..\/..\/mails\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$iso<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/'<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$template<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'.html'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"re0\">$subject<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'subject'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$message<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'message'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$id_customer<\/span> <span class=\"sy0\">=<\/span> Tools<span class=\"sy0\">::<\/span><span class=\"me2\">getValue<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'id_customer'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$customer<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Customer<span class=\"br0\">&#40;<\/span><span class=\"re0\">$id_customer<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$id_lang<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">id_lang<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"re0\">$template_vars<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>\n        <span class=\"st_h\">'{message}'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$message<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"st_h\">'{shop_name}'<\/span> <span class=\"sy0\">=&gt;<\/span> Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_NAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n    <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <a href=\"http:\/\/www.php.net\/mail\"><span class=\"kw3\">Mail<\/span><\/a><span class=\"sy0\">::<\/span><span class=\"me2\">Send<\/span><span class=\"br0\">&#40;<\/span>\n        <span class=\"re0\">$id_lang<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$template<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$subject<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$template_vars<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">email<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">firstname<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">' '<\/span><span class=\"sy0\">.<\/span><span class=\"re0\">$customer<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">lastname<\/span><span class=\"sy0\">,<\/span>\n        Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_EMAIL'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        Configuration<span class=\"sy0\">::<\/span><span class=\"me2\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'PS_SHOP_NAME'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"kw4\">null<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"kw4\">null<\/span><span class=\"sy0\">,<\/span>\n        <a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/..\/..\/mails\/'<\/span>\n    <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Simplemente cambia la ruta de acceso al directorio de emails y la ubicaci\u00f3n de los ficheros de la plantilla de email teniendo en cuenta la ubicaci\u00f3n f\u00edsica del controlador que, por normal general, suele estar en <em>tumodulo\/controllers\/front\/tucontrolador.php<\/em>.<\/p>\n<h2>\u00bfC\u00f3mo enviar mensajes a tus clientes desde tu tienda PrestaShop?<\/h2>\n<p>Afortunadamente para ti, tenemos un m\u00f3dulo gratuito que te va a servir perfectamente para enviar emails a tus clientes desde tu tienda.<\/p>\n<p>Tambi\u00e9n te puede servir de gu\u00eda o base para crear tu c\u00f3digo para enviar un email.<\/p>\n<p>El m\u00f3dulo es bastante simple de utilizar. Desde su configuraci\u00f3n puedes elegir a quien vas a enviar el mensaje, un t\u00edtulo y el mensaje (puede ser en formato HTML).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7819 aligncenter\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/formulario-envio-email.png\" alt=\"Enviar email a tus clientes desde PrestaShop\" width=\"906\" height=\"470\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/formulario-envio-email.png 906w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/formulario-envio-email-300x156.png 300w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/formulario-envio-email-768x398.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/p>\n<p>Puedes enviar un mensaje a un cliente en concreto, a un grupo de clientes, a todos los clientes, solo a los clientes suscritos a la newsletter o, incluso, a un empleado.<\/p>\n<p><a href=\"https:\/\/www.jamodules.com\/es\/59-enviar-newsletter-a-clientes.html\" target=\"_blank\" rel=\"noopener\">Enviar newsletter a tus clientes desde PrestaShop<\/a><\/p>\n<p>Si necesitas algo m\u00e1s avanzado, tambi\u00e9n podr\u00edas probar el Bolet\u00edn de correo PRO. Este m\u00f3dulo te va a permitir enviar\u00a0mensajes o boletines en formato HTML a tus clientes desde tu tienda. Boletines avanzados con registro e informe de errores.<\/p>\n<p><a href=\"https:\/\/www.jamodules.com\/es\/225-boletin-de-correo-pro.html\" target=\"_blank\" rel=\"noopener\">Ver Bolet\u00edn de correo PRO<\/a><\/p>\n<h2>Conclusiones<\/h2>\n<p>Enviar emails a tus clientes desde tu tienda es una idea brillante para evitar tener que contratar servicios de terceros para el env\u00edo masivo de emails pero es importante que sepas que estos m\u00f3dulos son una buena opci\u00f3n para mandar correo masivo cuando tienes pocos clientes.<\/p>\n<p>En el momento que tengas m\u00e1s de 1.000 clientes a los que enviar masivamente, es posible que tu servidor no te lo permita. Debes consultar con tu servicio de alojamiento para averiguar cual es el l\u00edmite de env\u00edo masivo de emails.<\/p>\n<p>En cambio, si lo vas a usar para enviar mensajes a un cliente o empleado en concreto, no deber\u00edas tener inconvenientes, siempre y cuando, la configuraci\u00f3n de env\u00edo de emails est\u00e9 correctamente configurada tanto en tu tienda como en tu servicio de alojamiento.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.<\/p>\n","protected":false},"author":1,"featured_media":7820,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[99],"class_list":["post-7791","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-prestashop","tag-emails"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-29T04:55:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/\",\"name\":\"Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png\",\"datePublished\":\"2023-09-29T04:55:31+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png\",\"width\":500,\"height\":500,\"caption\":\"Como enviar email desde un m\u00f3dulo en PrestaShop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como enviar email desde un m\u00f3dulo en PrestaShop 8\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog","description":"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog","og_description":"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2023-09-29T04:55:31+00:00","og_image":[{"width":500,"height":500,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/","url":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/","name":"Como enviar email desde un m\u00f3dulo en PrestaShop 8 - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png","datePublished":"2023-09-29T04:55:31+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Descubre como enviar un email desde un m\u00f3dulo en PrestaShop desde el archivo principal y desde un controlador usando PHP.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2023\/09\/Como-enviar-email-desde-un-modulo-en-PrestaShop-8.png","width":500,"height":500,"caption":"Como enviar email desde un m\u00f3dulo en PrestaShop"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-enviar-email-desde-un-modulo-en-prestashop-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Como enviar email desde un m\u00f3dulo en PrestaShop 8"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=7791"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7791\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7820"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=7791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=7791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=7791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}