系统学习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方法发送电子邮件。