Index: mimemail.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mimemail/mimemail.inc,v
retrieving revision 1.27
diff -u -p -r1.27 mimemail.inc
--- mimemail.inc	6 Aug 2008 04:15:19 -0000	1.27
+++ mimemail.inc	6 Aug 2008 13:09:58 -0000
@@ -80,7 +80,7 @@ function mimemail_headers($headers, $fro
  *                  )
  */
 function mimemail_extract_files($html) {
-  $pattern = '/(<link[^>]+href="?|<object[^>]+codebase="?|@import |src="?)\/?([^"]+)("?)/emis';
+  $pattern = '/(<link[^>]+href="?|<object[^>]+codebase="?|@import |src="?)([^"]+)("?)/emis';
   $html = preg_replace($pattern, '"\\1". _mimemail_file("\\2") ."\\3"', $html);
 
   $document = array(array(
@@ -97,14 +97,18 @@ function mimemail_extract_files($html) {
 /**
  * Helper function to extract local files
  *
- * @param $file a link to a file
+ * @param $url a URL to a file
  *
  * @return an absolute :
  */
-function _mimemail_file($file = NULL, $name = '', $type = '', $disposition = 'related') {
+function _mimemail_file($url = NULL, $name = '', $type = '', $disposition = 'related') {
   static $files = array();
 
-  if ($file && !preg_match('@://|mailto:@', $file) && file_exists($file)) {
+  if ($url) {
+    $file = _mimemail_url_to_file($url);
+  }
+
+  if ($file && file_exists($file)) {
     $content_id = md5($file) .'@'. $_SERVER['HTTP_HOST'];
 
     if (!$name) {
@@ -123,8 +127,8 @@ function _mimemail_file($file = NULL, $n
     return 'cid:'. $content_id;
   }
 
-  if ($file) {
-    return $file;
+  if ($url) {
+    return $url;
   }
 
   $ret = $files;
@@ -133,6 +137,30 @@ function _mimemail_file($file = NULL, $n
 }
 
 /**
+ * Helper function to convert a URL to a filesystem path. 
+ *
+ * @param $url a URL to a file.
+ *
+ * @return an absolute path to the file, or NULL if it could not be converted.
+ */
+function _mimemail_url_to_file($url) {
+  global $base_url;
+
+  $prefixes = array(
+    $base_url . "/",
+    base_path()
+  );
+
+  foreach ($prefixes as $prefix) {
+    if (substr($url, 0, strlen($prefix)) == $prefix) {
+      return substr($url, strlen($prefix));
+    }
+  }
+
+  return NULL;
+}
+
+/**
  *
  * @param $parts
  *        an array of parts to be included
