我创建了一个观察员模块,只要购买并支付某个产品,就会发送电子邮件。为了填充该电子邮件,我需要检索给定订单的送货地址,帐单地址和客户名称。到目前为止,我的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();
将是我所需要的,但它们会返回大对象,而不是我需要的简单字符串。
如何将地址和名称输出转换为可插入电子邮件的简单字符串?
提前谢谢。
}
答案 0 :(得分:1)
尝试
$命令 - &GT; getBillingAddress() - &GT;格式( 'HTML')
如果你使用magento交易电子邮件会更好,看看@ magento sending custom emails
答案 1 :(得分:0)
您可以获得如下的电子邮件地址:
'Email:' . print_r($order->getCustomerEmail(), true)