diff -Naur realname/realname.module realname.new/realname.module
--- realname/realname.module	2011-02-21 23:18:42.000000000 +0100
+++ realname.new/realname.module	2011-05-10 18:58:33.699408344 +0200
@@ -543,12 +543,31 @@
  * Intercepts the user activation form to show the username.
  */
 function realname_mail_alter(&$message) {
-  switch ($message['id']) {
-    case 'user_status_activated':
-      // Look for the "username: " string which precedes the username.
-      if (isset($message['params']['account']->realname_save)) {
-        $message['body'][0] = str_replace(t('username: ') . $message['params']['account']->name, t('username: ') . $message['params']['account']->realname_save, $message['body'][0]);
-      }
+  $midparts = explode('_', $message['id'], 2);
+  if ($midparts[0] == 'user' || $midparts[0] == 'logintoboggan') {
+    switch ($midparts[1]) {
+      case 'status_activated':
+        // Look for the "username: " string which precedes the username.
+        if (isset($message['params']['account']->realname_save)) {
+          $message['body'][0] = str_replace(t('username: ') . $message['params']['account']->name, t('username: ') . $message['params']['account']->realname_save, $message['body'][0]);
+        }
+      case 'register_admin_created':
+      case 'register_no_approval_required':
+      case 'register_pending_approval':
+      case 'password_reset':
+      case 'status_blocked':
+      case 'status_deleted':
+      case 'logintoboggan_resend_validation':
+        // Expands !realname token.
+        $account = user_load(array('mail' => $message['to']));
+        if ($account) {
+          $realname = isset($account->realname) ? $account->realname : realname_make_name($account);
+        } else {
+          $realname = $message['params']['account']->name;
+        }
+
+        $message['body'][0] = str_replace('!realname', $realname, $message['body'][0]);
+    }
   }
 }
 
@@ -621,6 +640,13 @@
     case 'privatemsg_new':
       $form['privatemsg']['recipient']['#autocomplete_path'] = 'realname/privatemsg/autocomplete';
       break;
+
+    case 'user_admin_settings':
+      $messages = array('admin_created', 'no_approval_required', 'pending_approval', 'password_reset', 'activated', 'blocked', 'deleted');
+      foreach ($messages as &$message) {
+        $form['email'][$message]['#description'] = str_replace('!username,', '!username, !realname,', $form['email'][$message]['#description']);
+      }
+      break;
   }
 }
 
