I am using magento for sending mail with condition,

My code:

<?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();
          $extra = $order->getIncrementId();
          $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);
     }

 }

 public function sendMail($message) {
   $body ="$message";
   $emailTemplate = Mage::getModel('core/email');
   $emailTemplate->setFromName('abc');
   $emailTemplate->setBody($body);
   $emailTemplate->setSubject("Custom Email from observer");
   $emailTemplate->setType('html');
   $emailTemplate->setToEmail('abc@gmail.com');
   $emailTemplate->send();

}
}

?>

Output :

https://snipboard.io/encLQH.jpg

If order placed mail send to abc@gmail.com.
How to set email sender based on SKU $sku from order.

I want :

1) If SKU starts with 2, email should go to the mail id abc@gmail.com,
screenshot :

https://snipboard.io/2aiBze.jpg

2) If SKU starts with 3, email should go to the mail id xyz@gmail.com,
screenshot :

https://snipboard.io/tmWfEx.jpg

3) If SKU starts with 4, email should go to the mail id qwe@gmail.com,
screenshot :

https://snipboard.io/M5dGIn.jpg

FYI - If an order contains 10 items email should go separately based on SKU. But an order id the same must include all the emails.

Recommended Answers

All 2 Replies

Pass the $sku to the sendMail function: $this->sendMail($finalMessage, $sku); then add the conditional around the email address, you could make it simple and make the $sku variable say 'lots_of_orders' if he has over 10:

$cut_sku = substr($sku, 0, 1);
if($sku == 'lots_of_orders'){
    $emailTemplate->setToEmail('xyz@gmail.com');
}elseif($cut_sku == '1'){
    $emailTemplate->setToEmail('abc@gmail.com');
}elseif($cut_sku == '2'){
     $emailTemplate->setToEmail('bcd@gmail.com');
}else....

@biiim

My code :

<?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();
            $extra = $order->getIncrementId();
            $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, $sku);
        }

    }

    public function sendMail($message) {
        $body ="$message";
        $emailTemplate = Mage::getModel('core/email');
        $emailTemplate->setFromName('abc');
        $emailTemplate->setBody($body);
        $emailTemplate->setSubject("Custom Email from observer");
        $emailTemplate->setType('html');

        // Multiple Email Recipients Condition

        $cut_sku = substr($sku, 0, 1);

        if($sku == 'lots_of_orders') {
            $emailTemplate->setToEmail('abc@gmail.com');
        }elseif ($cut_sku == '2') {
            $emailTemplate->setToEmail('xyz@gmail.com');
        }elseif ($cut_sku == '3') {
            $emailTemplate->setToEmail('qwe@gmail.com');
        }elseif ($cut_sku == '4') {
            $emailTemplate->setToEmail('ewq@gmail.com');
        }

        $emailTemplate->send();

    }
}

?>

Error output :

https://snipboard.io/f56vtu.jpg

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.