我已经创建了一个观察员模块,它将在购买和支付某一产品时发送一封电子邮件。为了填充该电子邮件,我需要检索给定订单的托运地址、计费地址和客户名称。到目前为止,我的Observer.php如下所示:
<?php
class Electricjesus_Notifyowner_Model_Observer {
public function notifyOwnerEvent($observer) {
$invoice = $observer->getInvoice();
// derivative data
$order = $invoice->getOrder(); // Mage_Sales_Model_Order
$items = $order->getAllItems();
$i = 0;
foreach($items as $item) {
$skus[$i] = $item->getSku();
$i++;
}
$needle = 'train-01';
if( in_array( $needle, $skus ) ) {
ob_start();
var_dump($skus);
$skuDump = ob_get_clean();
$filedump = '$skuDump: ' . $skuDump . "\n" . '------------------------------' . "\n";
$shipAddr = $order->getBillingAddress();
ob_start();
var_dump($shipAddr);
$shipAddrDump = ob_get_clean();
$filedump .= '$shipAddrDump: ' . $shipAddrDump . "\n" . '------------------------------' . "\n";
$billAddr = $invoice->getShippingAddress();
ob_start();
var_dump($billAddr);
$billAddrDump = ob_get_clean();
$filedump .= '$billAddrDump: ' . $billAddrDump . "\n" . '------------------------------' . "\n";
$custName = $order->getCustomerName();
ob_start();
var_dump($custName);
$custNameDump = ob_get_clean();
$filedump .= '$custNamedump: ' . $custNameDump;
file_put_contents('observer_log.txt', $filedump);
$email = array(
'to' => 'daniel@danielclarke.ca',
'subject' => 'Confirmed Purchase',
'message' => "
<html>
<body>
". $custName ." has ordered and paid for the following products.
<table>
<th>
<td>
Items Ordered
</td>
<td>
Shipping Address
</td>
<td>
Billing Address
</td>
</th>
<tr>
<td>
". $skuDump ."
</td>
<td>
". $shipAddr ."
</td>
<td>
". $billAddr ."
</td>
</tr>
</table>
</body>
</html>",
'headers' => 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n" . 'From: Ashop.in Store'
);
//mail($email['to'], $email['subject'], $email['message'], $email['headers']);
}
return $this; // always return $this.
}我已经注释掉了实际发送电子邮件的行,而不是简单地输出到文件中,因为考虑到所涉及的对象中有大量的信息,它更快、更容易。我认为$shipAddr = $order->getBillingAddress();、$billAddr = $invoice->getShippingAddress();和$custName = $order->getCustomerName();将是我所需要的全部,但是它们返回大对象,而不是我需要的简单字符串。
如何将地址和名称输出到可以插入电子邮件的简单字符串中?
提前谢谢你。
}发布于 2013-12-06 17:12:34
试一试
$order->getBillingAddress()->format('html')
另外,如果您使用magento事务性电子邮件,查看@ magento发送自定义电子邮件会更好
发布于 2013-12-12 05:48:21
你可以得到这样的电子邮件地址:
'Email:' . print_r($order->getCustomerEmail(), true)https://stackoverflow.com/questions/20428400
复制相似问题