Отправка электронного письма с заказом Senn на адрес CC - PullRequest
0 голосов
/ 11 мая 2018

Я хочу отправить посылку с заказом и все другие электронные письма, связанные с Заказом, на адрес электронной почты CC, определенный в пользовательском атрибуте Клиента.

Я переопределил \Magento\Sales\Model\Order\Email\SenderBuilder

namespace MyCompany\Customization\Model\Order\Email;
use Magento\Sales\Model\Order\Email;`

use Magento\Framework\Mail\Template\TransportBuilder;`

class SenderBuilder extends \Magento\Sales\Model\Order\Email\SenderBuilder
{
    /**
     * Prepare and send email message
     *
     * @return void
     */
    public function send()
    {
        $this->configureEmailTemplate();

        $this->transportBuilder->addTo(
            $this->identityContainer->getCustomerEmail(),
            $this->identityContainer->getCustomerName()
        );

        $copyTo = $this->identityContainer->getEmailCopyTo();

        if (!empty($copyTo) && $this->identityContainer->getCopyMethod() == 'bcc') {
            foreach ($copyTo as $email) {
                $email = 'test@test.com';
                $this->transportBuilder->addBcc($email);
            }
        }

        // CODE TO SEND CC EMAILS
        try {
            if( method_exists($this->identityContainer,'getOrderCustomerId') ) {
                \Magento\Framework\App\ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class)->debug('Shipment Email SEND ######');
                $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
                $customerObj = $objectManager->create('Magento\Customer\Model\Customer')->load($this->identityContainer->getOrderCustomerId());
                mail('rdambare@test.com','CC EMAIL - Order Update Email Send - ',$customerObj->getCcEmail());
                if($customerObj->getCcEmail() != "" && $customerObj->getCcEmail() != $this->identityContainer->getCustomerEmail()) {
                    mail('rdambare@test.com','CC EMAIL - Order Update Email Send >>>>> - ',$customerObj->getCcEmail());
                    $this->transportBuilder->addCc($customerObj->getCcEmail());
                }
            }
        } catch(Exception $e) {
            mail('rdambare@test.com','CC EMAIL - Order Update Email Exception',$e->getMessage());
        }
        // END - CODE TO SEND CC EMAILS


        $transport = $this->transportBuilder->getTransport();
        $transport->sendMessage();
    }
}

Также переопределить - \Magento\Sales\Model\Order\Email\Sender\ShipmentSender

namespace MyCompany\Customization\Model\Order\Email\Sender;

use Magento\Sales\Model\Order\Shipment;

class ShipmentSender extends \Magento\Sales\Model\Order\Email\Sender\ShipmentSender
{
    public function send(Shipment $shipment, $forceSyncMode = false)
    {

        $order = $shipment->getOrder();

        /*Start - No shipment email in case of Amazon Order*/
       if(stripos($order->getShippingDescription(),"amazon") !== FALSE) {
            return false;   
        }
       /*End - No shipment email in case of Amazon Order*/


        $shipment->setSendEmail(true);

        if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {

            $transport = [
                'order' => $order,
                'shipment' => $shipment,
                'comment' => $shipment->getCustomerNoteNotify() ? $shipment->getCustomerNote() : '',
                'billing' => $order->getBillingAddress(),
                'payment_html' => $this->getPaymentHtml($order),
                'store' => $order->getStore(),
                'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
                'formattedBillingAddress' => $this->getFormattedBillingAddress($order)
            ];

            $this->eventManager->dispatch(
                'email_shipment_set_template_vars_before',
                ['sender' => $this, 'transport' => $transport]
            );

            $this->templateContainer->setTemplateVars($transport);

            if ($this->checkAndSend($order)) {
                $shipment->setEmailSent(true);
                $this->shipmentResource->saveAttribute($shipment, ['send_email', 'email_sent']);
                return true;
            }
        }

        $this->shipmentResource->saveAttribute($shipment, 'send_email');

        return false;
    }

}

Но электронная почта не отправляется на адрес электронной почты CC.

Как выдает ошибку

PHP Фатальная ошибка: Uncaught Ошибка: вызов неопределенного метода Magento \ Sales \ Model \ Order \ Email \ Container \ ShipmentIdentity :: getOrderCustomerId () в Приложение / код / ​​MyCompany / Настройка / Model / Order / Email / SenderBuilder.php: 39

Итак, я переопределил -

\Magento\Sales\Model\Order\Email\Container\ShipmentIdentity



namespace MyCompany\Customization\Model\Order\Email\Container;

//use Magento\Sales\Model\Order\Email\Container\OrderIdentity;

class ShipmentIdentity extends \Magento\Sales\Model\Order\Email\Container\ShipmentIdentity
{
    public function setOrderCustomerId($id)
    {
        $this->_customerId = $id;
    }

    public function getOrderCustomerId()
    {
        return $this->_customerId;
    }
}

Все еще не работает.

Любая помощь будет полезна .. Спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...