diff -Naur webform.old/webform.install webform/webform.install
--- webform.old/webform.install	2008-05-10 13:02:38.464904131 -0500
+++ webform/webform.install	2008-05-09 23:04:04.200907414 -0500
@@ -23,6 +23,7 @@
         email_subject varchar(255) default NULL,
         additional_validate text default NULL,
         additional_submit text default NULL,
+        email_format text default NULL,
         PRIMARY KEY  (nid)
         ) TYPE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 */"
       );
@@ -80,6 +81,7 @@
         email_subject varchar(255) NOT NULL default '',
         additional_validate text default NULL,
         additional_submit text default NULL,
+        email_format text default NULL,
         PRIMARY KEY (nid)
         )"
       );
@@ -672,6 +674,25 @@
 }
 
 /**
+ * Add additional validate and submit processing columns.
+ */
+function webform_update_5300() {
+  $ret = array();
+
+  switch ($GLOBALS['db_type']) {
+    case 'pgsql':
+      $ret[] = update_sql("ALTER TABLE {webform} ADD email_format text DEFAULT NULL");
+      break;
+    case 'mysqli':
+    case 'mysql':
+      $ret[] = update_sql("ALTER TABLE {webform} ADD email_format text DEFAULT NULL AFTER additional_submit");
+      break;
+  }
+
+  return $ret;
+}
+
+/**
  * Recursively delete all files and folders in the specified filepath, then
  * delete the containing folder.
  *
@@ -693,4 +714,4 @@
     }
     @rmdir($path);
   }
-}
\ No newline at end of file
+}
diff -Naur webform.old/webform.module webform/webform.module
--- webform.old/webform.module	2008-05-10 13:02:38.480901978 -0500
+++ webform/webform.module	2008-05-10 12:58:53.624900902 -0500
@@ -314,7 +314,7 @@
   include_once(drupal_get_path('module', 'webform') .'/webform_components.inc');
 
   // Insert the Webform.
-  db_query("INSERT INTO {webform} (nid, confirmation, teaser, submit_text, submit_limit, submit_interval, email, email_from_name, email_from_address, email_subject, additional_validate, additional_submit) VALUES (%d, '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s')", $node->nid, $node->webform['confirmation'], $node->webform['teaser'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval'], $node->webform['email'], $node->webform['email_from_name'], $node->webform['email_from_address'], $node->webform['email_subject'], $node->webform['additional_validate'], $node->webform['additional_submit']);
+  db_query("INSERT INTO {webform} (nid, confirmation, teaser, submit_text, submit_limit, submit_interval, email, email_from_name, email_from_address, email_subject, additional_validate, additional_submit, email_format) VALUES (%d, '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $node->nid, $node->webform['confirmation'], $node->webform['teaser'], $node->webform['submit_text'], $node->webform['submit_limit'], $node->webform['submit_interval'], $node->webform['email'], $node->webform['email_from_name'], $node->webform['email_from_address'], $node->webform['email_subject'], $node->webform['additional_validate'], $node->webform['additional_submit'], $node->webform['email_format']);
 
   // Insert the components into the database.
   if (isset($node->webform['components']) && !empty($node->webform['components'])) {
@@ -367,6 +367,7 @@
       'email_subject' => 'default',
       'additional_validate' => '',
       'additional_submit' => '',
+      'email_format' => '',
     );
   }
 
@@ -655,6 +656,14 @@
       '#value' => $node->webform['additional_submit'],
     );
   }
+  $form['webform']['advanced']['email_format'] = array(
+    '#type' => 'textarea',
+    '#title' => 'Email Theming',
+    '#description' => t('Use this field to format the email that can be sent. You can use %form[field_name] to insert a value.'),
+    '#default_value' => $node->webform['email_format'],
+    '#cols' => 40,
+    '#rows' => 10,
+  );
   /* End Advanced Settings Form */
 
   return $form;
@@ -1571,25 +1580,54 @@
  */
 function theme_webform_mail_message($form_values, $node, $sid, $cid) {
   global $user;
-
+  
   $message = '';
-  $message .=  t('Submitted on') .' '. format_date(time(), 'small') ."\n";
-  $ip_address = $_SERVER['REMOTE_ADDR'];
-
-  if ($user->uid) {
-    $message .= t('Submitted by user') .": $user->name [$ip_address]\n";
-  }
-  else {
-    $message .= t('Submitted by anonymous user') .": [$ip_address]\n";
-  }
+  
+  if ($node->webform['email_format'] == '') {
+    $message .=  t('Submitted on') .' '. format_date(time(), 'small') ."\n";
+    $ip_address = $_SERVER['REMOTE_ADDR'];
+  
+    if ($user->uid) {
+      $message .= t('Submitted by user') .": $user->name [$ip_address]\n";
+    }
+    else {
+      $message .= t('Submitted by anonymous user') .": [$ip_address]\n";
+    }
 
-  $message .= "\n";
-  $message .= t('Submitted values are');
-  $message .= theme('webform_mail_fields', 0, $form_values['submitted_tree'], $node);
+    $message .= "\n";
+    $message .= t('Submitted values are');
+    $message .= theme('webform_mail_fields', 0, $form_values['submitted_tree'], $node);
 
-  $message .= "\n\n";
-  $message .= t("The results of this submission may be viewed at:") ."\n";
-  $message .= url('node/'. $node->nid, "sid=". $sid, NULL, TRUE);
+    $message .= "\n\n";
+    $message .= t("The results of this submission may be viewed at:") ."\n";
+    $message .= url('node/'. $node->nid, "sid=". $sid, NULL, TRUE);
+  } else {
+    // Use theming william
+    $message = $node->webform['email_format'];
+    
+    // Find all tokens and replace them with real values.
+    // List tokens in an Array
+    $tokens = array(
+      '%date' => format_date(time(), 'small'),
+      '%user' => $user->name,
+      '%ip_addr' => $ip_address,
+      '%result_url' => url('node/'. $node->nid, "sid=". $sid, NULL, TRUE),
+    );
+    
+    // Add form values
+    foreach ($node->webform['components'] as $arr) {
+      $themed_output = theme("webform_mail_" . $arr['type'], $form_values['submitted_tree'][$arr['form_key']], $arr);
+      if (!$themed_output) {
+        $themed_output = $arr['value'];
+      }
+      $tokens['%form[' . $arr['form_key'] . ']'] = $themed_output;
+    }
+    
+    // Replace tokens
+    foreach ($tokens as $token => $value) {
+      $message = str_replace($token, $value, $message);
+    }
+  }
 
   return $message;
 }
