Magento Observer,用于多邮件传送

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()->

下订单后,我在Magento发送电子邮件方面遇到一些困难。我需要发送自定义电子邮件到自定义地址。我为
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'),请参见上文