diff --git a/comment_notify.module b/comment_notify.module
index f980fc7ebc8007084dd22482c7fb4302d9a0f247..565b89ba191da7fd91b19cd40dffd72ba97f064e 100644
--- a/comment_notify.module
+++ b/comment_notify.module
@@ -271,7 +271,7 @@ function _comment_notify_mailalert($comment) {
   global $language;
   global $base_url;
 
-  $initial_locale = $language;
+  $initial_language = $language;
 
   if (function_exists('locale')) {
     $languages = locale_supported_languages();
@@ -289,7 +289,6 @@ function _comment_notify_mailalert($comment) {
     $comment_mail = $comment->mail;
   }
 
-  $from = variable_get('site_mail', ini_get('sendmail_from'));
   $result = db_query('SELECT DISTINCT c.cid, u.init, c.uid, c.name, c.nid, c.mail cmail, u.mail umail, u.init uinit, c.uid, c.name, cn.notify_hash mymd5
     FROM {comments} c INNER JOIN {comment_notify} cn on c.cid = cn.cid LEFT OUTER JOIN {users} u ON c.uid = u.uid
     WHERE nid = %d  AND cn.notify = 1 AND c.status = 0', $nid
@@ -304,19 +303,23 @@ function _comment_notify_mailalert($comment) {
     $mail = empty($alert->cmail) ? $umail : $alert->cmail;
 
     if ($mail != $comment_mail && !in_array($mail, $sent_to) && $alert->uid != $comment->uid) {
-
-      if (function_exists('locale') && $languages[$user->language]) {
-        $language = $user->language;
+      $message = array();
+      if (!empty($alert->uid)) {
+        $recipient_user = user_load(array('uid' => $alert.uid));
+        $language = user_preferred_language($recipient_user);
+      }
+      else {
+        $language = language_default();
       }
 
-      $subject = t('!site :: new comment for your post.', array('!site' => variable_get('site_name', 'drupal')));
-      $message = t(
+      $message['subject'] = t('!site :: new comment for your post.', array('!site' => variable_get('site_name', 'drupal')));
+      $message['body'][] = drupal_html_to_text(t(
         variable_get('comment_notify_default_mailtext', DEFAULT_MAILTEXT),
         array(
           '!commname' => $comment->name,
           '!commtext' => $comment->comment,
           '!commsubj' => $comment->subject,
-          '!comment_url' => url('node/'. $nid, NULL, NULL, 1) .'#comment-'. $cid,
+          '!comment_url' => url('node/'. $nid, array('absolute' => TRUE)) .'#comment-'. $cid,
           '!node_title' =>  $node->title,
           '!node_teaser' => $node->teaser,
           '!mission' => variable_get('site_mission', ''),
@@ -330,9 +333,8 @@ function _comment_notify_mailalert($comment) {
           '!edit_uri' => url('user/'. $alert->uid .'/edit', array('absolute' => TRUE)),
           '!link1' => url('comment_notify/disable/'. $alert->mymd5, array('absolute' => TRUE))
         )
-      );
-
-      drupal_mail('comment_notify_mail', $mail, $subject, $message, $from, array());
+      ));
+      drupal_mail('comment_notify', 'comment_notify_mail', $mail, $language, $message);
       $count++;
       $sent_to[] = $mail;
 
@@ -346,7 +348,7 @@ function _comment_notify_mailalert($comment) {
 
       // Add an entry to the watchdog log.
       watchdog('comment_notify', $watchdog_message,
-        WATCHDOG_NOTICE, l(t('source comment'), 'node/'. $nid, NULL, NULL, 'comment-'. $alert->cid));
+        WATCHDOG_NOTICE, l(t('source comment'), 'node/'. $nid, array('fragment' => 'comment-'. $alert->cid)));
 
       // revert to previous (site default) locale
       $language = $initial_language;
@@ -354,6 +356,12 @@ function _comment_notify_mailalert($comment) {
   }
 }
 
+function comment_notify_mail($key, &$message, $params) {
+  $message['subject'] = $params['subject'];
+  $message['body'][] = $params['body'][0];
+}
+
+
 /**
  * Callback for an administrative form to unsubscribe users by e-mail address.
  */