관리자가 수동으로 주문을 취소 할 때 이메일을 보내려고합니다. 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
config.xml에 기본값이없는 것 같아서 Admin -> Transactional Email (ID 16)에 템플릿을 추가 했습니까? –
예, 그랬습니다. 거래 전자 메일 16이 존재합니다. –