【问题标题】:Magento2 Custom Email send?Magento2 自定义电子邮件发送?
【发布时间】:2018-03-01 18:05:32
【问题描述】:

我在 magento2 页面中添加了自定义 html 表单。在 magento2 中默认的联系表格将在那里,它会正常工作。但我的自定义电子邮件没有发送。如何与用户和管理员一起发送自定义邮件?

【问题讨论】:

标签: magento2


【解决方案1】:

1.创建新的 html 文件

/app/code/VendorName/ModuleName/view/frontend/email/modulename/test.html

<div>

Hello, Test email.

</div>

2。声明您的电子邮件模板,创建 xml 文件

/app/code/VendorName/ModuleName/etc/email_templates.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:Magento:module:Magento_Email:etc/email_templates.xsd">
    <template id="modulename_test_template" label="Test email" file="modulename/test.html" type="html" module="VendorName_ModuleName" area="frontend"/>
</config>

3。最后,创建一个函数来发送您的电子邮件。

namespace VendorName\ModuleName\Controller;

use Magento\Framework\App\RequestInterface;

class Sendemail extends \Magento\Framework\App\Action\Action
{
    /**
     * @var \Magento\Framework\App\Request\Http
     */
    protected $_request;
    /**
     * @var \Magento\Framework\Mail\Template\TransportBuilder
     */
    protected $_transportBuilder;
    /**
     * @var \Magento\Store\Model\StoreManagerInterface
     */
    protected $_storeManager;

public function __construct(
    \Magento\Framework\App\Action\Context $context
    , \Magento\Framework\App\Request\Http $request
    , \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder
    , \Magento\Store\Model\StoreManagerInterface $storeManager
)
{
    $this->_request = $request;
    $this->_transportBuilder = $transportBuilder;
    $this->_storeManager = $storeManager;
    parent::__construct($context);
}

public function execute()
{
    $store = $this->_storeManager->getStore()->getId();
    $transport = $this->_transportBuilder->setTemplateIdentifier('modulename_test_template')
        ->setTemplateOptions(['area' => 'frontend', 'store' => $store])
        ->setTemplateVars(
            [
                'store' => $this->_storeManager->getStore(),
            ]
        )
        ->setFrom('general')
        // you can config general email address in Store -> Configuration -> General -> Store Email Addresses
        ->addTo('customer@email.com', 'Customer Name')
        ->getTransport();
    $transport->sendMessage();
    return $this;
}

}

【讨论】:

    【解决方案2】:

    检查流程,创建新的联系表单,然后您可以从 HTTPREquestInterface 获取表单数据,然后参考上述答案发送电子邮件,然后您可以使用自定义表单发送电子邮件


    public function execute()
    {
        $store = $this->_storeManager->getStore()->getId();
        $transport = $this->_transportBuilder->setTemplateIdentifier('modulename_test_template')
            ->setTemplateOptions(['area' => 'frontend', 'store' => $store])
            ->setTemplateVars(
                [
                    'store' => $this->_storeManager->getStore(),
                ]
            )
            ->setFrom('general')
            // you can config general email address in Store -> Configuration -> General -> Store Email Addresses
            ->addTo('customer@email.com', 'Customer Name')
            ->getTransport();
        $transport->sendMessage();
        return $this;
    }
    
    //customer@email.com---can get it from httpRequest
    

    【讨论】:

    • 您好,欢迎来到 SO,如果您回答问题,请解释您的答案。这样问问题的人也能理解答案
    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多