When you want to get just a big bulk list of emails from a previous email account you had set up and wanted to import it into your Magento subscriber database there are a few ways to do it.
Personally I prefer writing it via an SQL statement though you can use the inbuilt subscribe function for Magento. The problem with the subscribe function is that it will notify the customer a newsletter subscription success email. If you don’t want that here’s what you can do.
Copy to a local folder your app>code>core>Mage>Newsletter>Model>Subscriber.php. Navigate down to about line 311 & 313 and comment out using the two forward slashes the following commands:
1 if ($isConfirmNeed) {
//$this->sendConfirmationRequestEmail();
} else {
//$this->sendConfirmationSuccessEmail();
}
This should stop the email sending.
//$this->sendConfirmationRequestEmail();
} else {
//$this->sendConfirmationSuccessEmail();
}
This should stop the email sending.
Now what I propose is that you create a new php file on your root. Connect it up to Magento with the following code at the top.
require_once($_SERVER['DOCUMENT_ROOT'].'/shop/app/Mage.php'); Mage::app(); |
Note: My installation was in a “shop” folder.
Next we’ll need to use our model that we copied locally and perform the subscribe function. You can do this via the following method.
$_helper = new Mage_Newsletter_Model_Subscriber();
$_helper->subscribe("myemail@e-mail.co.uk");
This will subscribe that email as a guest to your newsletter list. Of course you can collect all of your email addresses in an array and run it through a foreach to add them all in one go.
$_helper->subscribe("myemail@e-mail.co.uk");
This will subscribe that email as a guest to your newsletter list. Of course you can collect all of your email addresses in an array and run it through a foreach to add them all in one go.
The other way to do this would be to use the database connection. What I have is an array set up of emails such as:
$emails = array("myemail1@e-mail.co.uk","myemail2@e-mail.co.uk","myemail3@e-mail.co.uk");
I then use a simple foreach but this time instead of using the function I’ll use a simple mysql statement.
1 | foreach($emails as $email){ |
2 | $db = Mage::getSingleton('core/resource')->getConnection('core/write'); |
3 | $query = "SELECT * FROM newsletter_subscriber WHERE subscriber_email = '$email'"; |
4 | $result = $db->query($query); |
5 | if($result->fetchAll()): |
6 | echo "Email Not Added: $email<br/>"; |
7 | else: |
8 | $db->query("INSERT INTO newsletter_subscriber (`subscriber_id` , `store_id` , `change_status_at` , `customer_id` , `subscriber_email` , `subscriber_status` , `subscriber_confirm_code`) VALUES (NULL,'1',NULL,'0','$email','1',NULL)"); |
9 | echo "Email Successfully Added: $email<br/>"; |
10 | endif; |
11 | } |