I was recently helping a client setup and configure their Magento newsletter module, and worked to help them get a large part of their subscriber base imported into Magento from external sources. To accomplish this, I created a newsletter subscribers import script for Magento that helped them accomplish a quick import of their subscriber base that existed outside of their Magento installation.
This script can handle one-off additions, as well as take a file upload, the format being one email address per line. It will also add the emails to the newsletter without sending a confirmation email that they’ve subscribed.
To use the subscribers script, you’ll need to change one thing, the require_once import path to point to your Magento installation’s Mage.php file.
I would also recommend that you place the file within a sub-directory in your current Magento installation, such as "newsletters", to allow you to easily access it for use (i.e. mydomain.com/newsletters/import_subscribers.php).
You can find the Magento newsletter subscribers import script below:
<?php set_time_limit(180); require_once "/path/to/magento/installation/app/Mage.php"; Mage::app(); ?> <h3>Subscribe Methods:</h3> <p><strong>Method:</strong> TXT File</p> <p>Please upload a text (.txt) file containing one (1) email address per line.</p> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="hidden" name="subscribe_method" value="txt_file" /> <input type="file" name="file" id="file"> <input type="submit" name="submit" value="Submit"> </form> <p>- or -</p> <p><strong>Method:</strong> Individual Email</p> <form action="" method="post"> <label for="">Email:</label> <input type="hidden" name="subscribe_method" value="individual_email" /> <input type="text" name="email" id="email" value="" /> <input type="submit" name="submit" value="Submit" size="60" /> </form> <?php if (isset($_POST['submit']) ){ ?> <h3>Subscribe Results:</h3> <?php if ($_POST['subscribe_method'] == 'individual_email') { $email = $_POST['email']; Mage::getModel('newsletter/subscriber')->setImportMode(true)->subscribe($email); echo $email . ' has been subscribed<br/>'; } else if ($_POST['subscribe_method'] == 'txt_file') { if ($_FILES["file"]["error"] == 0) { // Open File Ref $handle = fopen($_FILES["file"]["tmp_name"], 'r'); if ($handle) { while (($email = fgets($handle, 4096)) !== false) { $email = trim($email); Mage::getModel('newsletter/subscriber')->setImportMode(true)->subscribe($email); echo $email . ' has been subscribed<br/>'; } } } } } ?>
Thanks for sharing this guide, I was trying to setup newsletter for my Magento store, I had to send them black Friday campaign, Your post helped me a lot in configuring this.