diff --git a/message_subscribe_email/message_subscribe_email.module b/message_subscribe_email/message_subscribe_email.module
index bfc85ec86d46fd048eafe7ab05af5bd65ffb3e5e..9c3b30c3d2ce726aa9a32cb8b899475a7bfd31b0 100644
--- a/message_subscribe_email/message_subscribe_email.module
+++ b/message_subscribe_email/message_subscribe_email.module
@@ -117,28 +117,36 @@ function message_subscribe_email_message_subscribe_get_subscribers_alter(&$uids,
     return;
   }
 
-  $flag_ids = array();
-  foreach ($flags as $flag) {
-    $flag_ids[] = $flag->fid;
-  }
+  foreach($values['context'] as $entity_type => $entity_ids) {
+    if (!$entity_ids) {
+      continue;
+    }
 
-  if (FLAG_API_VERSION == 2) {
-    $query = db_select('flag_content', 'f');
-  }
-  else {
-    $query = db_select('flagging', 'f');
-  }
+    $fids = array();
+    foreach ($flags as $flag) {
+      $fids[$flag->fid] = $flag->name;
+    }
 
-  $result = $query->fields('f', array('uid'))
-    ->condition('fid', $flag_ids, 'IN')
-    ->condition('uid', array_keys($uids), 'IN')
-    ->groupBy('uid')
-    ->execute()
-    ->fetchAll();
+    if (FLAG_API_VERSION == 2) {
+      $query = db_select('flag_content', 'f');
+    }
+    else {
+      $query = db_select('flagging', 'f');
+    }
 
-  foreach ($result as $row) {
-    // Add 'email' to the list of notifiers.
-    $uids[$row->uid]['notifiers']['email'] = 'email';
+    $result = $query->fields('f', array('uid'))
+      ->condition('content_type', $entity_type)
+      ->condition('content_id', $entity_ids, 'IN')
+      ->condition('fid', array_keys($fids), 'IN')
+      ->condition('uid', array_keys($uids), 'IN')
+      ->groupBy('uid')
+      ->execute()
+      ->fetchAll();
+
+    foreach ($result as $row) {
+      // Add 'email' to the list of notifiers.
+      $uids[$row->uid]['notifiers']['email'] = 'email';
+    }
   }
 }
 
