Following code for sending multiple recipient mail based on first digit of sku from order received,
<?php
class Gta_MerchantNotification_Model_Observer {
public function merchantremainder($Observer) {
$order = $Observer->getEvent()->getOrder();
$order_details = $order->getAllVisibleItems();
$itemData = array();
foreach ($order_details as $list) {
$incrementid = $order->getIncrementId();
$sku = $list->getsku();
$name = $list->getName();
$price = $list->getPrice();
$Qty = $list->getQtyOrdered();
// $this->sendMailbasedOnSku($sku);
$message =
"<tr>
<!-- <td>$incrementid</td> -->
<td>$sku</td>
<td>$name</td>
<td>$price</td>
<td>$Qty</td>
</tr>";
$itemData[$list->getId()] = $message;
}
$finalMessage =
"<p>Order Id : $incrementid</p>
<table border='1'>
<tr>
<!-- <th>Id</th> -->
<th>Sku</th>
<th>Product name</th>
<th>Price</th>
<th>Qty Ordered</th>
</tr>";
if (!empty($itemData)) {
foreach ($itemData as $data) {
$finalMessage .= $data;
}
$finalMessage .= "</table>";
// $this->sendMail($finalMessage);
$this->sendMailbasedOnSku($finalMessage,$sku);
}
}
public function sendMail($message) {
$body = "$message";
$emailTemplate = Mage::getModel('core/email');
$emailTemplate->setFromName('Test mail');
$emailTemplate->setBody($body);
$emailTemplate->setSubject("Custom Email from observer");
$emailTemplate->setType('html');
if($sku == '2')
{
$emailTemplate->setToEmail('abc@gmail.com');
}
elseif($sku == '3')
{
$emailTemplate->setToEmail('xyz@gmail.com');
}
elseif($sku == '4')
{
$emailTemplate->setToEmail('qwe@gmail.com');
}
else
{
$emailTemplate->setToEmail('ewq@gmail.com');
}
$emailTemplate->send();
}
public function sendMailbasedOnSku($message, $sku)
{
$body = "$message";
$emailTemplate = Mage::getModel('core/email');
$emailTemplate->setFromName('Test mail');
$emailTemplate->setBody($body);
$emailTemplate->setSubject("Custom Email from observer");
$emailTemplate->setType('html');
$chk_sku=(int)substr($sku, 0, 1);
if($chk_sku == '2')
{
$emailTemplate->setToEmail('abc@gmail.com');
}
elseif($chk_sku == '3')
{
$emailTemplate->setToEmail('xyz@gmail.com');
}
elseif($chk_sku == '4')
{
$emailTemplate->setToEmail('qwe@gmail.com');
}
else{
$emailTemplate->setToEmail('ewq@gmail.com');
}
return $emailTemplate->send();
// try{
// return $emailTemplate->send();
// Mage::getSingleton('core/session')->addSuccess('Success message');
// }catch (Exception $e)
// {
// Mage::getSingleton('core/session')->addError($e->getMessage());
// }
}
}
?>eg: If an order contains both 2 series of sku and 3 series of sku, order mail received only by 3 series of sku mail and not received 2 series of sku mail.
another eg. if order contains 22 (abc@gmail.com),33 (xyz@gmail.com),44 (qwe@gmail.com) order received only qwe@gmail.com
https://i.stack.imgur.com/qhI7i.png
My condition, if the order contains 2 products means to send a separate mail.
like
2 series of sku :
https://i.stack.imgur.com/eEoba.png
3 series of sku :
https://i.stack.imgur.com/McPVH.png
4 series of sku
https://i.stack.imgur.com/NZtQ0.png
Hi @Aveeva
You are missing following code line in your sendMailbasedOnSku method.
public function sendMailbasedOnSku($sku)
{
// sku is 22302
$chk_sku=(int)substr($sku, 0, 1);
$emailTemplate = Mage::getModel('core/email'); // This line is missing
@Mukesh Tiwari After added $emailTemplate = Mage::getModel('core/email'); mail working, but if condition not working. As per my condition if sku start with 2 mail should go to abc@gmail.com but here mail received ewq@gmail.com (Final email id in my if condition). How to correct my script?
@Mukesh Tiwari Check with my updated post.