diff --git a/register_preapproved.module b/register_preapproved.module
index b26d910..cf67c93 100755
--- a/register_preapproved.module
+++ b/register_preapproved.module
@@ -116,16 +116,8 @@ function register_preapproved_user_presave(&$edit, $account, $category) {
   // Only process new user accounts.
   if ($account->is_new && $category == 'account') {
 
-    // See if the user's email is on the pre-approved list.
-    $pattern = db_select('register_preapproved', 'rp')
-      ->fields('rp')
-      ->condition(db_or()
-        ->condition('mail', $edit['mail'])
-        ->condition('mail', strstr($edit['mail'], '@'))
-      )
-      ->execute()
-      ->fetchAssoc();
-
+    $pattern = register_preapproved_pre_approved_pattern($edit['mail']);
+    
     // email address or domain is pre-approved
     if (!empty($pattern)) {
       $register_preapproved_roles = array_keys(unserialize($pattern['roles']));
@@ -171,3 +163,57 @@ function valid_domain($mail) {
 
   return preg_match("/^@($domain|(\[($ipv4|$ipv6)\]))$/", $mail);
 }
+
+function register_preapproved_pre_approved_pattern($email) {
+  // See if the user's email is on the pre-approved list.
+  return db_select('register_preapproved', 'rp')
+    ->fields('rp')
+    ->condition(db_or()
+      ->condition('mail', $email)
+      ->condition('mail', strstr($email, '@'))
+    )
+    ->execute()
+    ->fetchAssoc();
+}
+
+if (module_exists('logintoboggan')) {
+/**
+ *
+ * Implements hook_form_FORMID_alter().
+ *
+ * Logintoboggan stuffs around with the registration process.
+ * So tweak the status messages and email-flow to avoid confusion.
+ *
+ */
+function register_preapproved_form_user_register_form_alter(&$form, &$form_state) {
+  $form['#submit'] = array_merge(array('register_preapproved_user_register_form_pre_submit'), $form['#submit']);
+  $form['#submit'][] = 'register_preapproved_user_register_form_post_submit';
+}
+
+/**
+ * Additional form submit handler for user_register_form.
+ * @param array $form
+ * @param array $form_state
+ */
+function register_preapproved_user_register_form_pre_submit($form, &$form_state) {
+  if (!empty($form_state['values']['mail']) && register_preapproved_pre_approved_pattern($form_state['values']['mail'])) {
+    // Save current state of 'user_register' flag.
+    $form_state['user_register'] = variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+    // So that the right email is sent in logintoboggan_user_register_submit().
+    variable_set('user_register', USER_REGISTER_VISITORS);
+  }
+}
+
+/**
+ * Additional form submit handler for user_register_form.
+ *
+ * Restores the saved settings regarding user registration notifications.
+ *
+ * @param array $form
+ * @param array $form_state
+ */
+function register_preapproved_user_register_form_post_submit($form, &$form_state) {
+  variable_set('user_register', $form_state['user_register']);
+}
+
+}
