【问题标题】:Magento 1.8.1.0 Order Confirmation Emails - Send the email again to sales onlyMagento 1.8.1.0 订单确认电子邮件 - 仅将电子邮件再次发送给销售人员
【发布时间】:2015-11-11 01:26:20
【问题描述】:

我们的销售团队没有收到 5 个不同订单的订单确认电子邮件。这个问题的原因仍然未知,但他们正在询问我们是否可以再次向他们发送订单确认电子邮件,无需将其发送给客户

订单详情页面上的“发送电子邮件”按钮正在正确发送邮件,但无法阻止客户接收。

我们是否可以通过某种方式仅将这封电子邮件发送给销售团队,无论是通过后台还是通过编程方式(如果不可能的话)?

谢谢你的回答

【问题讨论】:

    标签: php email magento confirmation-email


    【解决方案1】:

    我们最终决定制作一个脚本以编程方式发送电子邮件。 该脚本已在以下位置创建:

    /shell/resendEmails.php
    

    您只需要更改顶部参数。电子邮件将发送到此地址,而不是客户的地址。销售团队将收到通常的副本。

    代码本身大部分是函数Mage_Sales_Model_Order::sendNewOrderEmail()的副本,并进行了一些修改

    要执行脚本,您需要访问页面: http://YOUR-SITE-URL.com/shell/resendEmails.php

    (或您的脚本名称)。

    <?php
            require '../app/Mage.php';
            Mage::app();
    
            /********************************
            *   Please modify the following parameters
            ********************************/
    
            //The orders for you wich you want to send again the confirmation email
            $order_numbers=array(
                'xxxxxxx',
                'yyyyyyy',
            );
    
            //Your email address (the email will be send to this address instead of to the customer's)
            $custom_email="YOUR.EMAIL@ADDRESS.com";
            $custom_name="YOUR NAME";
            /**********************************
            *   Please modify the above parameters
            **********************************/
    
    
            foreach ($order_numbers as $increment_id){
    
                $this_order = Mage::getModel('sales/order')->loadByIncrementId($increment_id);
    
                $storeId = $this_order->getStore()->getId();
    
    
                // Get the destination email addresses to send copies to
                $method = new ReflectionMethod(get_class($this_order), '_getEmails');
                $method->setAccessible(true);
                $send_to=$method->invoke($this_order,$this_order::XML_PATH_EMAIL_COPY_TO);
                $copyTo=$send_to;
    
                $copyMethod = Mage::getStoreConfig($this_order::XML_PATH_EMAIL_COPY_METHOD, $storeId);
    
                // Start store emulation process
                $appEmulation = Mage::getSingleton('core/app_emulation');
                $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
    
                try {
                    // Retrieve specified view block from appropriate design package (depends on emulated store)
                    $paymentBlock = Mage::helper('payment')->getInfoBlock($this_order->getPayment())
                        ->setIsSecureMode(true);
                    $paymentBlock->getMethod()->setStore($storeId);
                    $paymentBlockHtml = $paymentBlock->toHtml();
                } catch (Exception $exception) {
                    // Stop store emulation process
                    $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
                    throw $exception;
                }
    
                // Stop store emulation process
                $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
    
                // Retrieve corresponding email template id and customer name
                if ($this_order->getCustomerIsGuest()) {
                    $templateId = Mage::getStoreConfig($this_order::XML_PATH_EMAIL_GUEST_TEMPLATE, $storeId);
                    $customerName = $this_order->getBillingAddress()->getName();
                } else {
                    $templateId = Mage::getStoreConfig($this_order::XML_PATH_EMAIL_TEMPLATE, $storeId);
                    $customerName = $this_order->getCustomerName();
                }
    
                $mailer = Mage::getModel('core/email_template_mailer');
                $emailInfo = Mage::getModel('core/email_info');
                $emailInfo->addTo($custom_email, $custom_name);
                if ($copyTo && $copyMethod == 'bcc') {
                    // Add bcc to customer email
                    foreach ($copyTo as $email) {
                        $emailInfo->addBcc($email);
                    }
                }
                $mailer->addEmailInfo($emailInfo);
    
                // Email copies are sent as separated emails if their copy method is 'copy'
                if ($copyTo && $copyMethod == 'copy') {
                    foreach ($copyTo as $email) {
                        $emailInfo = Mage::getModel('core/email_info');
                        $emailInfo->addTo($email);
                        $mailer->addEmailInfo($emailInfo);
                    }
                }
    
                // Set all required params and send emails
                $mailer->setSender(Mage::getStoreConfig($this_order::XML_PATH_EMAIL_IDENTITY, $storeId));
                $mailer->setStoreId($storeId);
                $mailer->setTemplateId($templateId);
                $mailer->setTemplateParams(array(
                        'order'        => $this_order,
                        'billing'      => $this_order->getBillingAddress(),
                        'payment_html' => $paymentBlockHtml
                    )
                );
                $mailer->send();
            }?>
    

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 2013-11-21
      • 2021-06-16
      • 2015-02-11
      • 2019-03-13
      • 2017-05-02
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多