How to Send Magento 2 Order Confirmation Email After Payment Success

by mageefy on Jan 3, 2023 Celebrities 375 Views

Default Magento automatically sends an order confirmation email once the order is placed. But what if someone wants to send an email after a successful payment completion from the third-party payment gateways in Magento 2 or what if the card is declined and payment fails? Unfortunately, Default Magento does not provide the functionality of sending email after getting successful payment from third-party gateways so we have come up with a custom code to send Email manually using event observer.

If you want to send the email only after the successful payment then you must write code in observer for checkout_onepage_controller_success_action event.

 

Create a simple method isEnable() using OrderIdentity.php to ensure that the order confirmation email is not sent twice.

Register the event under events.xml using the below code

[Package_Name]\[Module_Name]\etc\frontend\events.xml

 

<?xml version="1.0"?>

 

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">

    <event name="checkout_onepage_controller_success_action">

        <observer name="checkout_onepage_controller_success_action_sendmail" instance="[Package_Name]\[Module_Name]\Observer\SendMailOnOrderSuccess" />

    </event>

</config>

Once the event is registered, create Observer class in the following file:

[Package_Name]\[Module_Name]\Observer\SendMailOnOrderSuccess.php

 

 

 

<?php

 

namespace [Package_Name]\[Module_Name]\Observer;

 

use Magento\Framework\Event\ObserverInterface;

 

class SendMailOnOrderSuccess implements ObserverInterface

{

    /**

     * @var \Magento\Sales\Model\OrderFactory

     */

    protected $orderModel;

 

    /**

     * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender

     */

    protected $orderSender;

 

    /**

     * @var \Magento\Checkout\Model\Session $checkoutSession

     */

    protected $checkoutSession;

 

    /**

     * @param \Magento\Sales\Model\OrderFactory $orderModel

     * @param \Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender

     * @param \Magento\Checkout\Model\Session $checkoutSession

     *

     * @codeCoverageIgnore

     */

    public function __construct(

        \Magento\Sales\Model\OrderFactory $orderModel,

        \Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender,

        \Magento\Checkout\Model\Session $checkoutSession

    )

    {

        $this->orderModel = $orderModel;

        $this->orderSender = $orderSender;

        $this->checkoutSession = $checkoutSession;

    }

 

    /**

     * @param \Magento\Framework\Event\Observer $observer

     * @return void

     */

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

    {

        $orderIds = $observer->getEvent()->getOrderIds();

        if(count($orderIds))

        {

            $this->checkoutSession->setForceOrderMailSentOnSuccess(true);

            $order = $this->orderModel->create()->load($orderIds[0]);

            $this->orderSender->send($order, true);

        }

    }

}

 

 

After adding observer code, an email will be sent to customers on successful order payment. To avoid order duplication Email, we need to create a plugin using the di.xml file.

[Package_Name]\[Module_Name]\etc\di.xml

 

<?xml version="1.0"?>

 

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

    <type name="Magento\Sales\Model\Order\Email\Container\OrderIdentity">

        <plugin name="change_is_enable_method" type="\[Package_Name]\[Module_Name]\Plugin\Sales\Order\Email\Container\OrderIdentityPlugin"/>

    </type>

</config>

 

 

And Lastly, you need to create another file along with ‘di.xml’ that is OrderIdentityPlugin.php to remove duplication of email.

[Package_Name]\[Module_Name]\Plugin\Sales\Order\Email\Container\ OrderIdentityPlugin.php

 

 

 

<?php

 

namespace [Package_Name]\[Module_Name]\Plugin\Sales\Order\Email\Container;

 

class OrderIdentityPlugin

{

    /**

     * @var \Magento\Checkout\Model\Session $checkoutSession

     */

    protected $checkoutSession;

 

    /**

     * @param \Magento\Checkout\Model\Session $checkoutSession

     *

     * @codeCoverageIgnore

     */

    public function __construct(

        \Magento\Checkout\Model\Session $checkoutSession

    )

    {

        $this->checkoutSession = $checkoutSession;

    }

 

    /**

     * @param \Magento\Sales\Model\Order\Email\Container\OrderIdentity $subject

     * @param callable $proceed

     * @return bool

     */

    public function aroundIsEnabled(\Magento\Sales\Model\Order\Email\Container\OrderIdentity $subject, callable $proceed)

    {

        $returnValue = $proceed();

 

        $forceOrderMailSentOnSuccess = $this->checkoutSession->getForceOrderMailSentOnSuccess();

        if(isset($forceOrderMailSentOnSuccess) && $forceOrderMailSentOnSuccess)

        {

            if($returnValue)

                $returnValue = false;

            else

                $returnValue = true;

 

            $this->checkoutSession->unsForceOrderMailSentOnSuccess();

        }

 

        return $returnValue;

    }

}

That’s it! Now start sending the order confirmation Emails to your customers only after the payment is successful! Hope this code will help you to send Order Confirmation Email to your Customers after Successful Payment Transaction. You can even use & customize this code according to your need.

 

Related Best Magento Extension for your eCommerce Business- 

 

Bundle Product Option Image Extension For Magento 2

 

Reindex from Backend for Magento 2 Extension

 

Contact Us Inquiry Manager for Magento 2

 

Contact- 

 

Email  -  support@mageefy.com

              mageefy@gmail.com

 

Visit -  https://www.mageefy.com/

 

Address -  72, Second Floor, Ganesh Vihar Extension, Sirsi Road, Jaipur - 302034, India.

(+91) 0141- 6693741

 

 

 

 

Article source: https://article-realm.com/article/Arts-Entertainment/Celebrities/34450-How-to-Send-Magento-2-Order-Confirmation-Email-After-Payment-Success.html

Comments

No comments have been left here yet. Be the first who will do it.
Safety

captchaPlease input letters you see on the image.
Click on image to redraw.

Reviews

Guest

Overall Rating:

Most Viewed Articles

Statistics

Members
Members: 16832
Publishing
Articles: 78,741
Categories: 202
Online
Active Users: 4586
Members: 9
Guests: 4577
Bots: 19724
Visits last 24h (live): 12605
Visits last 24h (bots): 45659

Latest Comments

Quordle is like Wordle on steroids! Solving four words at once is a fun challenge that keeps me focused.
Last weekend in Dwarka I finally decided to try something different and it was worth every rupee. The experience with VIP Dwarka Escorts felt genuinely premium, from the conversation to the...
The Klever Wallet Extension offers a practical combination of accessibility, security, and convenience for anyone participating in the digital asset ecosystem. Its browser-based functionality...
imToken Wallet Extension is a browser-based cryptocurrency wallet that extends the functionality of the popular imToken mobile wallet to desktop browsers. It enables users to securely store, send,...
Unwinding after a hectic week of business meetings kinda needs a bit of class and a serene ambience, you know . Discerning clients quite often mention the wonderful relief they feel because of...
on Aug 7, 2026 about Brief discussion about Water
Double the experience, double the excitement! Let's review Dordle wordle – the word puzzle game that's taking the internet by storm thanks to its unique dual gameplay.  
Following the success of its predecessors, Run 3 returns with a completely new adventure interface, offering breathtaking challenges and an exhilarating space-traveling girl experience.  
Tiny Fishing is a fun fishing game in which you draw the line and try to catch as many fish as possible. Each fish you capture will earn you cash. Continue fishing to win more cash and unlock...
on Aug 7, 2026 about Nordic Online Dating
I like that the article highlights both technical and strategic HR topics instead of focusing only on system navigation. For anyone considering snake game training, I'd also recommend spending...
A trial subscription is a great way to test the service before committing. It’s always helpful to check channel availability, streaming quality, and device compatibility first.
on Aug 6, 2026 about IPTV PAID AND TRIAL SUBSCRIPTIONS

Translate To: