Отправка почты с помощью helper magento 2

Первым делом создаем шаблон отправки письма, для этого объявляем наш шаблон
app/code/Custom/Module/etc/email_templates.xml

<?xml version="1.0"?>
<config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:Magento:module:Magento_Email:etc/email_templates.xsd">
    <template id="feedback_email_template" label="New feedback email" file="email_feedback.html" type="html" module="Custom_Module" area="frontend"/>
</config>

Создадим наш шаблон по данному пути:

app/code/Custom/Module/etc/email_templates.xml

<!--@subject Обратная связь с сайта @-->
<div>

    Обратная связь от: {{var name}}
    <br> Номер заказа: {{var number_order}}
    <br> E-mail:  {{var email}}
    <br> Телефон: {{var phone}}
    <br> Сообщение: {{var message}}

</div>

Создаем helper из которого будет отправляться само письмо:

app/code/Custom/Module/Helper/Email.php

<?php
namespace Custom\Module\Helper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\Translate\Inline\StateInterface;
use Magento\Framework\Escaper;
use Magento\Framework\Mail\Template\TransportBuilder;
class Email extends \Magento\Framework\App\Helper\AbstractHelper
{
    /**
     * @var StateInterface
     */
    protected $inlineTranslation;

    /**
     * @var Escaper
     */
    protected $escaper;

    /**
     * @var TransportBuilder
     */
    protected $transportBuilder;

    /**
     * @var \Psr\Log\LoggerInterface
     */
    protected $logger;

    /**
     * @var
     */
    protected $_scopeConfig;


    public function __construct(
        Context $context,
        StateInterface $inlineTranslation,
        Escaper $escaper,
        TransportBuilder $transportBuilder,
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
    ) {
        parent::__construct($context);
        $this->inlineTranslation = $inlineTranslation;
        $this->escaper = $escaper;
        $this->transportBuilder = $transportBuilder;
        $this->logger = $context->getLogger();
        $this->_scopeConfig = $scopeConfig;
    }
    public function sendOrder($name, $email, $message, $phone = null, $numberOrder = null)
    {
        try {
            $this->inlineTranslation->suspend();
            $senderEmail = $this->_scopeConfig->getValue(
                'trans_email/ident_general/email',
                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
            );
            $sender = [
                'name' => $this->escaper->escapeHtml($name),
                'email' => $this->escaper->escapeHtml($senderEmail),
            ];
            $transport = $this->transportBuilder
                ->setTemplateIdentifier('feedback_email_template')
                ->setTemplateOptions(
                    [
                        'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
                        'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,
                    ]
                )
                ->setTemplateVars([
                    'name'  => $name,
                    'email' => $email,
                    'message' => $message,
                    'phone' => $phone,
                    'number_order' => $numberOrder
                ])
                ->setFrom($sender)
                ->addTo($senderEmail)
                ->getTransport();
            $transport->sendMessage();
            $this->inlineTranslation->resume();
        } catch (\Exception $e) {
            $this->logger->debug($e->getMessage());
        }
    }
}

Добавить комментарий