0

How to get email address in sales_quote_address_collect_totals_before events guest user email address.

<?php namespace xxxxxx\xxxx\Observer; 

use Magento\Framework\Event\ObserverInterface; 

class Observer implements ObserverInterface { 

/**
 * @var \Magento\Customer\Helper\Address
 */
protected $customerAddressHelper;



/**
 * Initialize dependencies.
 *
 * @param \Magento\Customer\Helper\Address $customerAddressHelper
 */

public function __construct(


      \Magento\Customer\Helper\Address $customerAddressHelper

) { 
   $this->customerAddressHelper = $customerAddressHelper;


}


public function execute(\Magento\Framework\Event\Observer $observer) {

    /** @var \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment */
    $shippingAssignment = $observer->getShippingAssignment();
    /** @var \Magento\Quote\Model\Quote $quote */
    $quote = $observer->getQuote();
    /** @var \Magento\Quote\Model\Quote\Address $address */
    $address = $shippingAssignment->getShipping()->getAddress();

     $order= $observer->getEvent()->getOrder();


    $customer = $quote->getCustomer();
    $storeId = $customer->getStoreId();
    $writer = new \Zend\Log\Writer\Stream(BP. '/var/log/nitesh.log');
    $logger = new \Zend\Log\Logger();
    $logger->addWriter($writer);
    $logger->info($address->getTelephone()); 
    $logger->info($address->getFirstname()); 
    $logger->info($address->getLastname()); 
    $logger->info($address->getEmail()); 
    $logger->info($quote->getCustomerEmail()); 

} 

print in a log file is :
2019-08-07T07:04:44+00:00 INFO (6): 7827495597
2019-08-07T07:04:44+00:00 INFO (6): testasd
2019-08-07T07:04:44+00:00 INFO (6): test1
2019-08-07T07:04:44+00:00 INFO (6):
2019-08-07T07:04:44+00:00 INFO (6):

Email address is empty. I want to get guest user email address in custom observer file .

  • Did you get a solution? – Arunprabakaran M Aug 7 '19 at 8:34
  • $email=$customer->getEmail(); empty print , not get a solution. – Nitesh Kumar Singh Aug 7 '19 at 9:50
0

You can get guest customer email by using following

$shippingAddress = $quote->getShippingAddress();

$logger->info($shippingAddress->getEmail());

Hope this solution works for you

  • Thanks, but $logger->info($shippingAddress->getEmail()); empty print , not working for me – Nitesh Kumar Singh Aug 7 '19 at 9:48
  • Do you get result array of $shippingAddress? – Mitro Aug 7 '19 at 9:50
  • result array of $shippingAddress is empty – Nitesh Kumar Singh Aug 7 '19 at 9:53
  • <event name="sales_quote_address_collect_totals_before"> <observer name="guest_sales_quote_address_collect_totals_before" instance="xxxx\xxx\Observer\Observer"/> </event> – Nitesh Kumar Singh Aug 7 '19 at 9:55
  • using this event in my events file – Nitesh Kumar Singh Aug 7 '19 at 9:57
0

instead of

$logger->info($address->getEmail());

use this line

$logger->info($order->getCustomerEmail());
  • this event call before going to the payment section, so the order is not created. – Nitesh Kumar Singh Aug 7 '19 at 11:15
  • you use like this $order= $observer->getEvent()->getOrder(); in your code you get the order info in that variable? – Jigs Parmar Aug 7 '19 at 11:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.