Subscribe by Email id in Magento 2 Use Subscribe($email) method to newsletter subscription in native code.
Native Class:
Magento\Newsletter\Model\Subscriber (Magento_Newsletter)
Subscriber Class contains a list of native methods related to the subscription functionality of Magento 2.
Common functions used in Subscription Class:
- subscribe()
- unsubscribe()
- confirm()
- updateSubscription()
- sendConfirmationRequestEmail()
- sendConfirmationSuccessEmail()
- beforeSave()
If you want to add some logic after subscription completed you need to create afterSubscribe() method.
Create di.xml file at Global area scope,
Path:
app/code/Jesadiya/Newsletter/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\Newsletter\Model\Subscriber">
<plugin name="custom_name_plugin" type="Jesadiya\Newsletter\Plugin\Model\Subscriber"
sortOrder="30"/>
</type>
</config>
Create a plugin PHP file to add your custom logic after customer subscribe,
Path:
app\Code\Jesadiya\Newsletter\Plugin\Model\Subscriber.php
<?php
namespace Jesadiya\Newsletter\Plugin\Model;
use Exception;
use Psr\Log\LoggerInterface;
use Magento\Customer\Model\Customer;
use Magento\Newsletter\Model\Subscriber;
use Magento\Customer\Model\CustomerRegistry;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Customer\Model\ResourceModel\Customer as CustomerResource;
use Magento\Newsletter\Model\ResourceModel\Subscriber as SubscriberResource;
class Subscribe
{
/**
* Plugin for after subscribe
*
* @param Subscriber $subject
* @param int $result
* @param string $email
*
*/
public function afterSubscribe(
Subscriber $subject,
int $result,
string $email
) {
//$email email id to be subscribe
if ($subject->getStatus() === Subscriber::STATUS_SUBSCRIBED) {
// custom code
} else {
// custom code
}
return $result;
}
}
In the Plugin file, $subject contains the Subscribe Class methods.
You can add your additional logic after the subscribe method called completed using the plugin way by the given approach.
