Magento 2 import email address to Newsletter from csv

Magento 2 import email address to Newsletter from csv.

I have a requirement to import email is from CSV and import the email ids to Newsletter Subscriber list from csv.

Write a PHP script which will import Newsletter subscriber from CSV.

In this script, first i have read the email ids  from Csv , Then  first  check an email is exits  as customer

Using Magento\Customer\Api\AccountManagementInterface ‘s   function isEmailAvailable($emailId,$websiteId) and depends  on customer types Guest ( mean guest Not register) and register, i have added  the email  to  subscriber list.

For add an email to the subscriber list, we need to call factory class Magento\Newsletter\Model\SubscriberFactory  and need to Customer.Guest customer  use



and register customer ,use


Step1: First create importnewsletter.php at magento2 dir for import email to Newsletter subscriber list from CSV.

add below code  for


ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

ini_set("soap.wsdl_cache_enabled", "0");
ini_set('default_socket_timeout', 600);

//require 'C:\xampp\htdocs\sample216\app\bootstrap.php';
require __DIR__ . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);

$obj = $bootstrap->getObjectManager();

$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');

$websiteId =  $obj->get('Magento\Store\Model\StoreManagerInterface')

$customerAccountManagement =$obj

$_subscriberFactory = $obj->create('Magento\Newsletter\Model\SubscriberFactory');

if (($handle = fopen("subscribers.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
       /* customer */
        if($customerAccountManagement->isEmailAvailable($data[0], $websiteId)){
            echo $data[0]."Guest <br/>";
            $_subscriberFactory = $_subscriberFactory->create()->subscribe($data[0]);
            echo $data[0]."Register <br/>";
            $customerFactory = $obj->get('Magento\Customer\Model\CustomerFactory');
            $customer->loadByEmail($data[0]);// load customer by email address


Step2: Create Csv file for import address.

CSV  like subscribers

Using this script,  you can Programmatically import email address to Newsletter from csv.