首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Magento 2给管理员的客户注册邮件

Magento 2给管理员的客户注册邮件
EN

Stack Overflow用户
提问于 2018-10-05 20:10:36
回答 1查看 1.3K关注 0票数 1

在过去的几周里,我一直在玩Magento 2,并设法让一些东西工作起来。我现在唯一苦苦挣扎的事情就是在客户注册后给管理员发一封邮件。

我正在寻找的是类似的东西:如果(邮件已发送到客户确认注册){发送邮件到管理员}

希望这就足够了。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-08 01:26:05

在Magento 2中完成客户注册后向管理员发送电子邮件的步骤

在\app\code\Namespace_Modulename\etc\frontend\中创建events.xml文件,并添加以下代码。在这里,我们需要定义一个在客户注册后发送邮件的事件。

代码语言:javascript
复制
<?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="sendmail_toadmin" instance="Namespace\module_name \Observer\SendMailToAdmin"/>
</event>
</config>

在\app\code\Namespace_Modulename\Observer中创建SendMailToAdmin.php文件。此观察器类用于在客户注册成功后发送邮件。

代码语言:javascript
复制
namespace Namespace_Modulename\Custom\Observer; 
use Magento\Framework\Event\ObserverInterface; 
class SendMailToAdmin implements ObserverInterface
{

const XML_PATH_EMAIL_RECIPIENT = 'trans_email/ident_general/email';
protected $_transportBuilder;
protected $inlineTranslation;
protected $scopeConfig;
protected $storeManager;
protected $_escaper;

public function __construct(
    \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder,
    \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    \Magento\Store\Model\StoreManagerInterface $storeManager,
    \Magento\Framework\Escaper $escaper
) {
    $this->_transportBuilder = $transportBuilder;
    $this->inlineTranslation = $inlineTranslation;
    $this->scopeConfig = $scopeConfig;
    $this->storeManager = $storeManager;
    $this->_escaper = $escaper;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{


    $customer = $observer->getData('customer');

    $this->inlineTranslation->suspend();
    try 
    {
        $error = false;

        $sender = [
            'name' => $this->_escaper->escapeHtml($customer->getFirstName()),
            'email' => $this->_escaper->escapeHtml($customer->getEmail()),
        ];
        $postObject = new \Magento\Framework\DataObject();
        $postObject->setData($sender);
        $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE; 
        $transport = 
            $this->_transportBuilder
            ->setTemplateIdentifier('1') // Send the ID of Email template which is created in Admin panel
            ->setTemplateOptions(
                ['area' => \Magento\Framework\App\Area::AREA_FRONTEND, // using frontend area to get the template file
                'store' => \Magento\Store\Model\Store::DEFAULT_STORE_ID,]
            )
            ->setTemplateVars(['data' => $postObject])
            ->setFrom($sender)
            ->addTo($this->scopeConfig->getValue(self::XML_PATH_EMAIL_RECIPIENT, $storeScope))
            ->getTransport();
        $transport->sendMessage(); ;
        $this->inlineTranslation->resume();


    } 
    catch (\Exception $e) 
    {
        \Magento\Framework\App\ObjectManager::getInstance()->get('Psr\Log\LoggerInterface')->debug($e->getMessage());
    }

}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52665344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档