Index: mimemail.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mimemail/mimemail.module,v
retrieving revision 1.31.2.3
diff -u -p -r1.31.2.3 mimemail.module
--- mimemail.module	14 Apr 2009 23:08:59 -0000	1.31.2.3
+++ mimemail.module	14 Aug 2009 10:39:33 -0000
@@ -303,22 +303,24 @@ function mimemail_theme() {
 function template_preprocess_mimemail_message(&$variables) {
   $theme = variable_get('theme_default', NULL);
 
+  $styles = drupal_get_path('theme', $theme) .'/mail.css';
+
   // Check for the existence of a mail.css file in the current theme folder
-  if (!file_exists($styles)) {
-    $styles = drupal_get_path('theme', $theme) .'/mail.css';
-  }
+  if (file_exists($styles)) {
+    $css = '<style type="text/css"><!-- ' . file_get_contents($styles) . ' --></style>';
+  } else {
+    // If no mail.css was found, convert the output of drupal_get_css()
+    // from linked stylesheets to embedded stylesheets.
+    $patterns = array('@<link +@',
+                      "@ +rel *= *(['\"])stylesheet\\1@",
+                      "@ +href *= *(['\"])" . "/" . "(.*?)\\1(.*?) />@e");
 
-  // If no mail.css was found, gather all style sheets
-  if (!file_exists($styles)) {
-    // embed a version of all style definitions
-    $styles = preg_replace('|<link.*href="'. base_path()
-                           .'([^"?]*)[?"].*|', '\1', drupal_get_css());
-  }
+    $replaces = array('<style ',
+                      '',
+                      '"$3><!--\n". file_get_contents("$2") ."\n--></style>\n"');
 
-  // Process each style sheet
-  foreach (explode("\n", $styles) as $style) {
-    if (file_exists($style)) $css .= file_get_contents($style);
+    $css = preg_replace($patterns, $replaces, drupal_get_css());
   }
-
-  $variables['css'] = str_replace(' ','', str_replace("\n", '', $css));
+  // Break up long lines and collapse repeated whitespace
+  $variables['css'] = preg_replace(array('/([{};])/','/( )\1+/'),array("\$1\n",'$1'),$css);
 }
