Index: queue_mail/queue_mail.module
===================================================================
--- queue_mail/queue_mail.module	(revision 167)
+++ queue_mail/queue_mail.module	(working copy)
@@ -5,14 +5,42 @@
  * Email sending function, called from job queue, or as a fallback.
  */
 function queue_mail_send($message = array()) {
-  $mimeheaders = array();
-  foreach ($message['headers'] as $name => $value) {
-    $mimeheaders[] = $name .': '. mime_header_encode($value);
+  if (module_exists("mimemail")) {
+    $from = $message['from'];
+    $to = $message['to'];
+    $subject = $message['subject'];
+    if (preg_match('/plain/',$message['headers']['Content-Type'])) {
+      $format = variable_get('mimemail_format', FILTER_FORMAT_DEFAULT);
+      $body = check_markup($message['body'], $format, FALSE);
+    }
+    else {
+      $body = $message['body'];
+    }
+    $headers = isset($message['headers']) ? $message['headers'] : array();
+    $mailkey = isset($message['mailkey']) ? $message['mailkey'] : '';
+    $files = isset($message['params']['files']) ? $message['params']['files'] : array();
+    return mimemail($from, $to, $subject, $body, NULL, $headers, NULL, $files, $mailkey);
   }
-  return mail(
-    $message['to'],
-    mime_header_encode($message['subject']),
-    str_replace("\r", '', $message['body']),
-    join("\n", $mimeheaders)
-  );
+  else {
+    $mimeheaders = array();
+    foreach ($message['headers'] as $name => $value) {
+      $mimeheaders[] = $name .': '. mime_header_encode($value);
+    }
+
+    // If no explicit Return-path set, use From header and add Return-Path.
+    if (empty($message['headers']['Return-Path'])) {
+      $return_path = $message['from'];
+    }
+    else {
+      $return_path = $message['headers']['Return-Path'];
+    }
+
+    return mail(
+      $message['to'],
+      mime_header_encode($message['subject']),
+      str_replace("\r", '', $message['body']),
+      join("\n", $mimeheaders),
+      "-f". $return_path
+    );
+  }
 }
