2012-11-04 3 views
1

관리자가 수동으로 주문을 취소 할 때 이메일을 보내려고합니다. order_cancel_after 이벤트를 사용하고 있으며 내 옵저버 메서드가 제대로 실행됩니다.Magento : 맞춤 옵저버에서 맞춤 거래 전자 메일 보내기

그러나 내 이메일이 보내지지 않습니다. 모든 코드가 실행 되더라도 다음 예외 (위)가 표시됩니다. $order->sendNewOrderEmail()을 내 SMTP 괜찮 있도록 새 주문 메일이 제대로 도착 :

exception 'Zend_Mail_Protocol_Exception' with message 'No recipient forward path has been supplied' in /home/mydomain/www/loja/lib/Zend/Mail/Protocol/Smtp.php:309

내 주문 관찰자에 새 전자 메일을 전송 테스트. 관찰자의

내 코드 :

class Spalenza_Cancelorder_Model_Observer 
{ 
    public function enviamail(Varien_Event_Observer $observer) 
    { 
     $order = $observer->getOrder(); 
     if ($order->getId()) { 
      try { 
       $translate = Mage::getSingleton('core/translate'); 
       $email = Mage::getModel('core/email_template'); 
       $template = 16;//Mage::getModel('core/email_template') ->loadByCode('Cancelamento Manual by Denis')->getTemplateId(); 
       Mage::log('Codigo do template: '.$template,null,'events.log'); 

       $sender = array(
       'name' => Mage::getStoreConfig('trans_email/ident_support/name', Mage::app()->getStore()->getId()), 
       'email' => Mage::getStoreConfig('trans_email/ident_support/email', Mage::app()->getStore()->getId()) 
       ); 

       Mage::log($sender,null,'events.log'); 

       $customerName = $order->getShippingAddress()->getFirstname() . " " . $order->getShippingAddress()->getLastname(); 
       $customerEmail = $order->getPayment()->getOrder()->getEmail(); 

       $vars = Array('order' => $order); 

       $storeId = Mage::app()->getStore()->getId(); 

       $translate = Mage::getSingleton('core/translate'); 
       Mage::getModel('core/email_template') 
        ->sendTransactional($template, $sender, $customerEmail, $customerName, $vars, $storeId); 
       $translate->setTranslateInline(true); 

       Mage::log('Order successfully sent',null,'events.log'); 
      } catch (Exception $e) { 
       Mage::log($e->getMessage(),null,'events.log'); 
      } 
     } else { 
      Mage::log('Order not found',null,'events.log'); 
     } 
    } 
} 

젠토 버전 : 1.5.1.0

+0

config.xml에 기본값이없는 것 같아서 Admin -> Transactional Email (ID 16)에 템플릿을 추가 했습니까? –

+0

예, 그랬습니다. 거래 전자 메일 16이 존재합니다. –

답변

2

이 줄

$customerEmail = $order->getPayment()->getOrder()->getEmail(); 

아마

$customerEmail = $order->getPayment()->getOrder()->getCustomerEmail(); 

당신은주의를해야해야 무슨 일이야? 오류 메시지가 나타나고 변수의 출력을 확인하십시오.

+0

Works man, thanks –