Hướn dẫn Config email gửi đi trong magento 2

Thảo luận trong 'Admin & Configuration Questions' bắt đầu bởi admin, 5 Tháng tám 2016.

  1. admin

    admin Mai Văn Hải Staff Member

    Để config email gửi đi trong magento2, cách nhanh nhất là override mageto \Magento\Framework\Mail\Transport

    Cách làm như sau:
    Step 1: Khai báo trong di.xml trong app/code/NameSpace/ModuleName/etc
    Mã:
    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
        <!-- for override magento default Transport class with our custom module model-->
        <preference for="\Magento\Framework\Mail\Transport" type="NameSpace\ModuleName\Model\Transport"/>
    </config>
    Trong đó bạn đổi tên NameSpace\ModuleName = tên theo cách của bạn

    Step 2: Sửa Transport với nội dung sau
    Mã:
    <?php
    /**
    * Mail Transport
    */
    namespace NameSpace\ModuleName\Model;
    class Transport extends \Zend_Mail_Transport_Smtp implements \Magento\Framework\Mail\TransportInterface
    {
        /**
         * @var \Magento\Framework\Mail\MessageInterface
         */
        protected $_message;
        /**
         * @param MessageInterface $message
         * @param null $parameters
         * @throws \InvalidArgumentException
         */
        public function __construct(\Magento\Framework\Mail\MessageInterface $message)
        {
            if (!$message instanceof \Zend_Mail) {
                throw new \InvalidArgumentException('The message should be an instance of \Zend_Mail');
            }
             $smtpHost= 'xxx.xxxx.xxx';//your smtp host  ';
             $smtpConf = [
                'auth' => 'login',//auth type
                'tsl' => 'tsl',
                'port' => '587',
                'username' => 'xxxx@xxxxx.xxx',//smtm user name
                'password' => 'xxxxxxxxxxxxxx'//smtppassword
             ];
            parent::__construct($smtpHost, $smtpConf);
            $this->_message = $message;
        }
        /**
         * Send a mail using this transport
         * @return void
         * @throws \Magento\Framework\Exception\MailException
         */
        public function sendMessage()
        {
            try {
                parent::send($this->_message);
            } catch (\Exception $e) {
                throw new \Magento\Framework\Exception\MailException(new \Magento\Framework\Phrase($e->getMessage()), $e);
            }
        }
    }
    Sau đó clear cache và test thử nhé

    Bài viết khác cùng chuyên mục:

Chia sẻ trang này