--- mass_contact_old.module	Fri Mar 13 20:39:15 2009
+++ mass_contact.module	Wed Mar 18 01:16:57 2009
@@ -1352,8 +1352,8 @@
     // Create the recipient list.
     $recipientouta = array();
     $roles = explode(',', $contact->recipients);
-    foreach ($roles as $r) {
-      if ($r == 2) { // all users
+    if (in_array('2', $roles)) {
+      // it's going out to everybody
         $recipients = db_query("SELECT name, mail, uid FROM {users} WHERE status <> %d AND uid > %d", 0, 0);
         while ($obj = db_fetch_object($recipients)) {
           $rname = $obj->name;
@@ -1363,11 +1363,10 @@
             $recipientouta[$rname] = $rmail;
           }
         }
-        break;
       }
       else {
         // Get from users_roles, then role -> user.
-        $uids = db_query("SELECT ur.uid FROM {users_roles} ur LEFT JOIN {users} u ON ur.uid = u.uid WHERE ur.rid = %d AND u.status <> %d", $r, 0);
+      $uids = db_query("SELECT DISTINCT(u.uid) FROM {users_roles} ur LEFT JOIN {users} u ON ur.uid = u.uid WHERE ur.rid = IN(%s) AND u.status <> %d", $contact->recipients, 0);
         while ($obj = db_fetch_object($uids))  {
           $ruid = $obj->uid;
           $userobj = db_fetch_object(db_query("SELECT name, mail FROM {users} WHERE uid = %d", $ruid));
@@ -1381,7 +1380,6 @@
           else {
             if ($rname != $user->name) {
               $recipientouta[$rname] = $rmail;
-            }
           }
         }
       }
