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!

Paso 1: declarar el módulo de configuración

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>

Paso 2: Declaración de la plantilla de correo electrónico

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:

  • ID de plantilla: el ID de plantilla creado en el primer paso.
  • Título: especifica el título que aparecerá en el menú desplegable de su correo electrónico.
  • Archivo: el archivo de plantilla para su correo electrónico.
  • Área: ubicación de almacenamiento de su correo electrónico en los archivos del módulo.
  • Tipo: escriba el correo electrónico en su módulo.

Paso 3: crea un correo electrónico de ayuda

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:

  • $ sender: representa la información del remitente, incluidos el nombre y el correo electrónico.
  • setTemplateVars: muestra la información de su correo electrónico.
  • setTemplateIdentifierr (’email_demo_template’): ¿Se describe la ID de correo electrónico de la plantilla descrita en los pasos uno y dos?
  • addTo (‘testmagento@gmail.com’): Ingrese aquí la dirección de correo electrónico del destinatario.

Paso 4: crea una plantilla de correo electrónico usando HTML

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.

Paso 5: prueba la funcionalidad del correo electrónico

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>

Paso 6: crea un observador para enviar correos electrónicos

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:

Conclusión

¡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!