当前位置: 技术文章>> magento2中的电子邮件组件以及代码示例

文章标题:magento2中的电子邮件组件以及代码示例
  • 文章分类: Magento
  • 10786 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


Magento 2使用Zend Framework提供的邮件组件来发送电子邮件。以下是一个基本的示例代码,可以用来发送电子邮件。

use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\Translate\Inline\StateInterface;
use Magento\Framework\App\Area;
use Magento\Store\Model\StoreManagerInterface;
class CustomClass
{
    protected $transportBuilder;
    protected $inlineTranslation;
    protected $storeManager;
    public function __construct(
        TransportBuilder $transportBuilder,
        StateInterface $inlineTranslation,
        StoreManagerInterface $storeManager
    ) {
        $this->transportBuilder = $transportBuilder;
        $this->inlineTranslation = $inlineTranslation;
        $this->storeManager = $storeManager;
    }
    public function sendEmail($templateId, $emailData, $recipientEmail, $recipientName)
    {
        try {
            // Start inline translation
            $this->inlineTranslation->suspend();
            // Set sender information
            $sender = [
                'name' => 'Sender Name',
                'email' => 'sender@example.com',
            ];
            // Set template variables
            $templateVars = $emailData;
            // Set recipient information
            $recipient = [
                $recipientEmail => $recipientName,
            ];
            // Set template options
            $templateOptions = [
                'area' => Area::AREA_FRONTEND,
                'store' => $this->storeManager->getStore()->getId(),
            ];
            // Create email template
            $this->transportBuilder->setTemplateIdentifier($templateId)
                ->setTemplateOptions($templateOptions)
                ->setTemplateVars($templateVars)
                ->setFrom($sender)
                ->addTo($recipient);
            // Send email
            $transport = $this->transportBuilder->getTransport();
            $transport->sendMessage();
            // End inline translation
            $this->inlineTranslation->resume();
            return true;
        } catch (\Exception $e) {
            return false;
        }
    }
}

在上面的示例中,CustomClass是一个自定义的PHP类,它需要在构造函数中注入TransportBuilder,StateInterface和StoreManagerInterface类的实例。 sendEmail方法接收四个参数:templateId表示要使用的电子邮件模板的ID,emailData是电子邮件模板需要的变量数据,recipientEmail是收件人的电子邮件地址,recipientName是收件人的名称。 sendEmail方法将创建电子邮件并将其发送。

请注意,在上面的示例中,我们使用了Magento 2中的inlineTranslation服务,该服务可以在发送电子邮件时自动翻译电子邮件模板中的文本。我们还设置了发送人的信息,模板变量,接收人的信息以及模板选项。最后,我们使用getTransport方法获取邮件传输对象,然后使用sendMessage方法发送电子邮件。


推荐文章