Magento Observer,用于多邮件传送
下订单后,我在Magento发送电子邮件方面遇到一些困难。我需要发送自定义电子邮件到自定义地址。我为Magento Observer,用于多邮件传送,magento,events,checkout,observers,Magento,Events,Checkout,Observers,下订单后,我在Magento发送电子邮件方面遇到一些困难。我需要发送自定义电子邮件到自定义地址。我为sales\u order\u place\u在之后创建了Observer,它工作得很好,但是当我对多个地址使用checkout时,我出现了错误。 这是我的观察员: public function sendMail($observer) { /* Get Order ID by Observer */ $_orderID = $observer->getOrder()->
sales\u order\u place\u在之后创建了Observer,它工作得很好,但是当我对多个地址使用checkout时,我出现了错误。
这是我的观察员:
public function sendMail($observer)
{
/* Get Order ID by Observer */
$_orderID = $observer->getOrder()->getID();
/* Load $order by Order ID */
$_order = Mage::getModel('sales/order')->load($_orderID);
try {
/* Load Email Template by template name */
$emailTemplate = Mage::getModel('core/email_template');
$emailTemplate->loadDefault('send_mail');
$emailTemplate->setTemplateSubject('SITE.COM: You Have New Order');
$salesData['email'] = 'example@site.com';
$salesData['name'] = Mage::getStoreConfig('trans_email/ident_general/name');
/* Set Sender name and email by General email */
$emailTemplate->setSenderName($salesData['name']);
$emailTemplate->setSenderEmail($salesData['email']);
/* Create email template by Order data */
$emailTemplateVariables['username'] = $_order->getCustomerName();
$emailTemplateVariables['shipping_address'] = $_order->getShippingAddress()->format('html');
$emailTemplateVariables['shipping_description'] = $_order->getShippingDescription();
$emailTemplateVariables['order_id'] = $_order->getIncrementId();
$emailTemplateVariables['creating_time'] = $_order->getCreatedAtFormated('long');
$emailTemplateVariables['is_not_virtual'] = $_order->getIsNotVirtual();
$emailTemplateVariables['store_name'] = $_order->getStoreName();
$emailTemplateVariables['store_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$emailTemplateVariables['order'] = $_order;
/* Send email, when order was placed */
$emailTemplate->setType('html');
$emailTemplate->send($salesData['email'], $_order->getStoreName(), $emailTemplateVariables);
/* Add Success Message to system.log if email was sent */
Mage::log('Success! Email was sent.');
} catch (Exception $e) {
/* Add error message to system.log if email wasn't sent */
Mage::logException($e);
}
return $this;
}
和config.xml
:
<events>
<sales_order_place_after>
<observers>
<sendmail>
<type>singleton</type>
<class>Custom_SendMail_Model_Order_Observer</class>
<method>sendMail</method>
</sendmail>
</observers>
</sales_order_place_after>
</events>
<template>
<email>
<send_mail translate="label">
<label>New Order for Dropshippers</label>
<file>sales/order_dropship.html</file>
<type>html</type>
</send_mail>
</email>
</template>
独生子女
自定义\发送邮件\型号\订单\观察者
发送邮件
托运人新订单
销售/订单_dropship.html
html
谢谢大家! 我找到了这个问题的解决方案。需要使用checkout\u submit\u all\u after
事件,而不是sales\u order\u place\u after
请发布错误日志。致命错误:在第47行调用local.site.com\app\code\local\Custom\SendMail\Model\order\Observer.php。第47行是$emailTemplateVariables['shipping_address']=$\u order->getShippingAddress()->格式('html')
因为$\u order=Mage::getModel('sales/order')->load($\u orderID)
$数据是空的,当它是一个简单的签出时-我可以按订单id加载订单。但是当它是一个多地址签出订单id为空$emailTemplateVariables['shipping\u address']=$\u order->getShippingAddress()->格式('html'),请参见上文