2015-08-18 2 views
2

Наша команда по продажам не получила письмо с подтверждением заказа на 5 различных заказов. Причина этой проблемы пока неизвестна, но они спрашивают, можем ли мы снова отправить электронные письма с подтверждением заказа, , не отправив ее клиенту.Magento 1.8.1.0 Подтверждение электронной почты для заказа - снова отправьте письмо только на продажу

Кнопка «Отправить письмо» на странице сведений о заказе правильно отправляет почту, но нет способа предотвратить ее получение.

Есть ли способ отправить это письмо только команде продаж, будь то через бэк-офис или, если это невозможно, программно?

Спасибо вам ответы

ответ

2

Мы, наконец, решили сделать скрипт для отправки электронной почты программно. Сценария был создан в следующем месте:

/shell/resendEmails.php 

Вам потребуются только изменить параметры верхней части. Письма будут отправляться по этому адресу, а не по электронной почте. Команда Sales получит копию, обычную.

Сам код в основном копия функции Mage_Sales_Model_Order::sendNewOrderEmail() с некоторыми изменениями

Для выполнения scrippt вам необходимо получить доступ к странице: 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="[email protected]"; 
     $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(); 
     }?>