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
$_subscriberFactory->create()->subscribe($Email);
and register customer ,use
$_subscriberFactory->create()->subscribeCustomerById($CustomerId);
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);
error_reporting(E_ALL);
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');
$state->setAreaCode('frontend');
$websiteId = $obj->get('Magento\Store\Model\StoreManagerInterface')
->getStore()
->getWebsiteId();
$customerAccountManagement =$obj
->create('Magento\Customer\Api\AccountManagementInterface');
$_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]);
}else{
echo $data[0]."Register <br/>";
$customerFactory = $obj->get('Magento\Customer\Model\CustomerFactory');
$customer=$customerFactory->create();
$customer->setWebsiteId($websiteId);
$customer->loadByEmail($data[0]);// load customer by email address
if($customer->getId()){
$_subscriberFactory->create()->subscribeCustomerById($customer->getId());
}
}
}
fclose($handle);
}
Step2: Create Csv file for import address.
CSV like subscribers

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


