¿Cómo envío un correo electrónico en Magento 2? |

Mantener una relación de trabajo saludable entre comerciantes y clientes que es esencial para el negocio. La única forma de construir esa relación es mantenerse en contacto y comunicarse con los clientes. El correo electrónico nos permite hacer esto.
Este artículo le ayudará a enviar un correo electrónico en Magento 2.
¡Vamos a empezar!
El primer paso es crear el archivo config.xml. Puede crear un campo para cargar la plantilla de correo electrónico en:
app/code/HostAdvice/EmailDemo/etc/adminhtml/system.xml.
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd"> <system> <tab id="bss" translate="label" sortOrder="300"> <label><![CDATA[HostAdvice]]></label> </tab> <section id="email" translate="label" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1"> <class>separator-top</class> <label>Hosting mas BaratoEmail Demo</label> <tab>hostadvice</tab> <resource>HostAdvice_EmailDemo::config_emaildemo</resource> <group id="demo" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Please Choose Your Email Template</label> <field id="template" translate="label" type="select" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Email Template</label> <source_model>MagentoConfigModelConfigSourceEmailTemplate</source_model> <comment>Email template is chosen based on theme fallback when "Default" option is selected.</comment> </field> </group> </section> </system> </config>
El siguiente paso es crear el archivo email_templates.xml en:
app/code/HostAdvice/EmailDemo/etc/email_templates.xml.
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd"> <template id="email_demo_template" label="This is email demo" file="email_demo_template.html" type="html" module="HostAdvice_EmailDemo" area="frontend"/> </config>
En este caso, verifique los siguientes detalles:
Ahora cree un correo electrónico de ayuda en:
app/code/HostAdvice/EmailDemo/Helper/Email.php.
<?php namespace HostAdviceEmailDemoHelper; use MagentoFrameworkAppHelperContext; use MagentoFrameworkTranslateInlineStateInterface; use MagentoFrameworkEscaper; use MagentoFrameworkMailTemplateTransportBuilder; class Email extends MagentoFrameworkAppHelperAbstractHelper { protected $inlineTranslation; protected $escaper; protected $transportBuilder; protected $logger; public function __construct( Context $context, StateInterface $inlineTranslation, Escaper $escaper, TransportBuilder $transportBuilder ) { parent::__construct($context); $this->inlineTranslation = $inlineTranslation; $this->escaper = $escaper; $this->transportBuilder = $transportBuilder; $this->logger = $context->getLogger(); } public function sendEmail() { try { $this->inlineTranslation->suspend(); $sender = [ 'name' => $this->escaper->escapeHtml('Test'), 'email' => $this->escaper->escapeHtml('humorgodfather9x02@gmail.com'), ]; $transport = $this->transportBuilder ->setTemplateIdentifier('email_demo_template') ->setTemplateOptions( [ 'area' => MagentoFrameworkAppArea::AREA_FRONTEND, 'store' => MagentoStoreModelStore::DEFAULT_STORE_ID, ] ) ->setTemplateVars([ 'templateVar' => 'My Topic', ]) ->setFrom($sender) ->addTo('testmagento@gmail.com') ->getTransport(); $transport->sendMessage(); $this->inlineTranslation->resume(); } catch (Exception $e) { $this->logger->debug($e->getMessage()); } } }
En este caso, tenga en cuenta lo siguiente:
Cree email_template.html en:
app/code/HostAdvice/EmailDemo/view/frontend/email/email_demo_template.html.
{Error in template processing} <table> <tr>{{trans "Wellcome To: %templateVar." templateVar=$templateVar}}</tr> </table> {Error in template processing}
Los correos electrónicos se pueden enviar a través de eventos o simplemente agregar los correos electrónicos a través de un complemento.
Para probar si el correo electrónico está funcionando, capturamos el evento customer_register_success. En este punto, la cuenta del cliente se ha registrado correctamente.
Esto se puede hacer en:
app/code/HostAdvice/EmailDemo/etc/frontend/events.xml.
Debería tener una salida como esta:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="customer_register_success"> <observer name="ha_email_customer_register" instance="HostAdviceEmailDemoObserverCustomerRegisterObserver"/> </event> </config>
Crea el observador en:
aplicación / código / Hosting mas Barato/ EmailDemo / Observer / CustomerRegisterObserver.php.
La salida debería verse así:
<?php namespace HostAdviceEmailDemoObserver; use MagentoFrameworkEventObserverInterface; use HostAdviceEmailDemoHelperEmail; class CustomerRegisterObserver implements ObserverInterface { private $helperEmail; public function __construct( Email $helperEmail ) { $this->helperEmail = $helperEmail; } public function execute(MagentoFrameworkEventObserver $observer) { return $this->helperEmail->sendEmail(); }
Una vez que la cuenta se haya registrado correctamente, el cliente debería recibir un correo electrónico como se muestra en la siguiente captura de pantalla:
¡Eso es! Estos sencillos pasos deberían ayudarlo a enviar un correo electrónico con éxito en Magento 2. Esperamos que esta información haya sido útil para lograr lo que desea.
¡Buena suerte!