diff --git a/includes/simplenews.admin.inc b/includes/simplenews.admin.inc
index 80002e7..3a3ec8e 100644
--- a/includes/simplenews.admin.inc
+++ b/includes/simplenews.admin.inc
@@ -725,6 +725,12 @@ function simplenews_subscription_list_add($form, &$form_state) {
     );
   }
 
+  $form['resubscribe'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Force resubscription'),
+    '#description' => t('By default simplenews ignores users priviously subscribed. Setting this option will force that those users ar getting resubscribed. Consider that this might be aginst the will of your users.'),
+  );
+
   // Include language selection when the site is multilingual.
   // Default value is the empty string which will result in receiving emails
   // in the site's default language.
@@ -764,6 +770,7 @@ function simplenews_subscription_list_add($form, &$form_state) {
 function simplenews_subscription_list_add_submit($form, &$form_state) {
   $added = array();
   $invalid = array();
+  $unsubscribed = array();
   $checked_categories = array_keys(array_filter($form_state['values']['newsletters']));
   $langcode = $form_state['values']['language'];
 
@@ -774,10 +781,17 @@ function simplenews_subscription_list_add_submit($form, &$form_state) {
       continue;
     }
     if (valid_email_address($email)) {
+      $subscriber = simplenews_subscriber_load_by_mail($email);
       foreach (simplenews_categories_load_multiple($checked_categories) as $category) {
-
-        simplenews_subscribe_user($email, $category->tid, FALSE, 'mass subscribe', $langcode);
-        $added[] = $email;
+        $is_unsubscribed = $subscriber && array_key_exists($category->tid, $subscriber->newsletter_subscription)
+              && $subscriber->newsletter_subscription[$category->tid]->status == SIMPLENEWS_SUBSCRIPTION_STATUS_UNSUBSCRIBED;
+        if ( !$is_unsubscribed || $form_state['values']['resubscribe'] == TRUE) {
+          simplenews_subscribe_user($email, $category->tid, FALSE, 'mass subscribe', $langcode);
+          $added[] = $email;
+        }
+        else {
+          $unsubscribed[$category->tid] = $email;
+        }
       }
     }
     else {
@@ -802,6 +816,12 @@ function simplenews_subscription_list_add_submit($form, &$form_state) {
     drupal_set_message(t('The following addresses were invalid: %invalid.', array('%invalid' => $invalid)), 'error');
   }
 
+  if ($unsubscribed) {
+    $unsubscribed = implode(", ", $unsubscribed);
+    drupal_set_message(t('The following addresses were skipped because they have previously unsubscribed: %unsubscribed.', array('%unsubscribed' => $unsubscribed)), 'warning');
+    drupal_set_message(t('If you like to resubscribe the skipped addresses use the \'Force resubscription\' option.'), 'warning');
+  }
+
   // Return to the parent page.
   $form_state['redirect'] = 'admin/people/simplenews';
 }
diff --git a/tests/simplenews.test b/tests/simplenews.test
index 5b14993..5e267f8 100644
--- a/tests/simplenews.test
+++ b/tests/simplenews.test
@@ -1458,6 +1458,31 @@ class SimpleNewsAdministrationTestCase extends SimplenewsTestCase {
     drupal_static_reset('simplenews_user_is_subscribed');
     $this->assertFalse(simplenews_user_is_subscribed($subscriber->mail, reset($subscriber->tids), t('Subscriber not subscribed anymore.')));
 
+    // Test mass subscribe with previously unsubscribed users.
+    $edit = array(
+      'emails' => $subscriber->mail,
+      'newsletters[' . reset($subscriber->tids) . ']' => TRUE,
+    );
+
+    $this->drupalPost('admin/people/simplenews/import', $edit, t('Subscribe'));
+    drupal_static_reset('simplenews_subscriber_load_multiple');
+    drupal_static_reset('simplenews_user_is_subscribed');
+    $this->assertFalse(simplenews_user_is_subscribed($subscriber->mail, reset($subscriber->tids), t('Subscriber not resubscribed trought mass subscription.')));
+    $this->assertText(t('The following addresses were skipped because they have previously unsubscribed: @mail.', array( '@mail' => $subscriber->mail)));
+    $this->assertText(t('If you like to resubscribe the skipped addresses use the \'Force resubscription\' option.'));
+
+
+    // Test mass subscribe with previously unsubscribed users and force resubscription.
+    $edit = array(
+      'emails' => $subscriber->mail,
+      'newsletters[' . reset($subscriber->tids) . ']' => TRUE,
+      'resubscribe' => TRUE,
+    );
+
+    $this->drupalPost('admin/people/simplenews/import', $edit, t('Subscribe'));
+    drupal_static_reset('simplenews_subscriber_load_multiple');
+    drupal_static_reset('simplenews_user_is_subscribed');
+    $this->assertTrue(simplenews_user_is_subscribed($subscriber->mail, reset($subscriber->tids), t('Subscriber resubscribed throught mass subscription.')));
 
     // @todo Test Admin subscriber edit preferred language $subscription->language
   }
