Magento – How to get customer/guest user email address without using session in magento

emailmagento-1.9

I'm trying to get customer(login)or guest user email address with sales order model, but it reflects blank result . I have been used this code..

$orderData = $observer->getEvent()->getOrder();
            $oincid = $orderData->getIncrementId();
            $order = Mage::getModel('sales/order')->loadByIncrementId($oincid);
            $order->getCustomerEmail();
            echo $order;exit;  

Best Answer

Try this:

In your config.xml file:

<config>
<global>
.........
   <events>
            <sales_order_place_after>
                <observers>
                    <any_name>
                        <type>singleton</type>
                        <class>Namespace_ModuleName_Model_Observer</class>
                        <method>getEmail</method>
                    </any_name>
                </observers>
            </sales_order_place_after>
   </events>
..........
</global>
</config>

Then in your Model/Observer.php:

public function getEmail($observer){
   $order= $observer->getEvent()->getOrder();
   if($order->getCustomerId()){
       $email = $order->getCustomerEmail(); //logged in customer
   }
   else{
       $email = $order->getBillingAddress()->getEmail(); //not logged in customer
   }

   //your other logic

   //lets test if it is grabbing email
   Mage::log($order->getId(). " - ". $email, null, 'your_name.log');
}

This will create a file named your_name.log in var/log folder when anyone places order.

If everything is ok, then you will see your customer's email in that file.

Good luck.

Related Topic