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.