diff --git a/includes/simplenews.admin.inc b/includes/simplenews.admin.inc
index 5b47cd1..119e586 100644
--- a/includes/simplenews.admin.inc
+++ b/includes/simplenews.admin.inc
@@ -1429,6 +1429,26 @@ function simplenews_admin_settings_mail($form, &$form_state) {
     '#description' => t('When checked cron will be used to send newsletters (recommended). Test newsletters and confirmation emails will be sent immediately. Leave unchecked for testing purposes.'),
   );
 
+  // Generate a list of options which theme to use to render the emails.
+  $theme_options = array('current' => t('Current'), 'default' => t('Default'));
+  if (module_exists('domain_theme')) {
+    $theme_options['domain'] = t('Domain');
+  }
+  // Get a list of all themes.
+  $themes = list_themes();
+  foreach ($themes as $name => $theme) {
+    if ($theme->status == 1) {
+      $theme_options[$name] = $theme->info['name'];
+    }
+  }
+  $form['simplenews_mail_backend']['simplenews_theme'] = array(
+    '#type' => 'select',
+    '#title' => t('Theme to render the e-mails'),
+    '#description' => t('Select the theme that will be used to render the e-mails. This can be either the current theme, the default theme, the domain theme or any active theme.'),
+    '#options' => $theme_options,
+    '#default_value' => variable_get('simplenews_theme', 'current'),
+  );
+
   $sources = simplenews_get_source_caches();
   $sources_labels = array();
   $sources_descriptions = '';
@@ -1478,10 +1498,23 @@ function simplenews_admin_settings_mail($form, &$form_state) {
     '#default_value' => variable_get('simplenews_debug', FALSE),
     '#description' => t('When checked all outgoing simplenews emails are logged in the system log. A logged email does not guarantee that it is send or will be delivered. It only indicates that a message is sent to the PHP mail() function. No status information is available of delivery by the PHP mail() function.'),
   );
+  $form['#submit'][] = 'simplenews_admin_settings_mail_submit';
   return system_settings_form($form);
 }
 
 /**
+ * Submit handler for the mail settings form.
+ *
+ * Rebuilds theme registry to make changes needed by theme rendering.
+ */
+function simplenews_admin_settings_mail_submit($form, &$form_state) {
+  //dpm($form_state['values']);
+  //if ($form_state['values']['simplenews_theme'] != variable_get('simplenews_theme', 'current')) {
+    drupal_theme_rebuild();
+  //}
+}
+
+/**
  * Menu callback: Simplenews admin settings - Subscription.
  */
 function simplenews_admin_settings_subscription($form, &$form_state) {
diff --git a/simplenews.module b/simplenews.module
index 9acd135..fe918b0 100644
--- a/simplenews.module
+++ b/simplenews.module
@@ -2763,6 +2763,9 @@ function template_preprocess_simplenews_newsletter_body(&$variables) {
   unset($variables['build']['links']);
   unset($variables['build']['comments']);
 
+  $theme = _simplenews_get_theme();
+  $variables['simplenews_theme'] = drupal_get_path('theme', $theme);
+
   $variables['title'] = check_plain($variables['build']['#node']->title);
 
   // Add specific suggestions that can override the default implementation.
@@ -2798,6 +2801,9 @@ function template_preprocess_simplenews_newsletter_footer(&$variables) {
   unset($variables['build']['links']);
   unset($variables['build']['comments']);
 
+  $theme = _simplenews_get_theme();
+  $variables['simplenews_theme'] = drupal_get_path('theme', $theme);
+
   // @todo Replace 'format' by 'view_mode ?
   $variables['format'] = $variables['category']->format;
   $variables['unsubscribe_text'] = t('Unsubscribe from this newsletter', array(), array('langcode' => $variables['language']));
@@ -3229,4 +3235,100 @@ function simplenews_impersonate_user($new_user = NULL) {
  */
 function simplenews_revert_user() {
   return simplenews_impersonate_user();
+}
+
+/**
+ * Implements hook_theme_registry_alter().
+ */
+function simplenews_theme_registry_alter(&$theme_registry) {
+  global $theme_key;
+  static $recursion_prevention = FALSE;
+
+  // Preventing double execution.
+  if ($recursion_prevention) {
+    return;
+  }
+
+  $recursion_prevention = TRUE;
+  foreach ($theme_registry as $name => $hook) {
+    if (strpos($name, 'simplenews_newsletter_') !== FALSE) {
+      $simplenews_theme = _simplenews_get_theme();
+      $themes = list_themes();
+      // Getting the render theme.
+      $theme = isset($themes[$simplenews_theme]) ? clone $themes[$simplenews_theme] : NULL;
+      if ($theme != NULL) {
+        // Stablishing variables for further process.
+        $base_theme = array();
+        if (isset($theme->base_themes)) {
+          foreach (array_keys($theme->base_themes) as $base) {
+            $base_theme[$base] = clone $themes[$base];
+          }
+        }
+        if (isset($theme->base_theme) && !isset($base_theme[$theme->base_theme])) {
+          $base_theme[$theme->base_theme] = clone $themes[$theme->base_theme];
+        }
+        $theme_engine = isset($theme->engine) ? $theme->engine : NULL;
+
+        // Include template files to let _theme_load_registry add preprocess functions.
+        include_once drupal_get_path('theme', $theme->name) . '/template.php';
+        foreach ($base_theme as $base) {
+          include_once drupal_get_path('theme', $base->name) . '/template.php';
+        }
+
+        // Get the theme_registry cache.
+        $cache = _theme_load_registry($theme, $base_theme, $theme_engine);
+        if (isset($cache[$name])) {
+          $cache[$name]['includes'][] = drupal_get_path('theme', $theme->name) . '/template.php';
+          foreach ($base_theme as $base) {
+            $cache[$name]['includes'][] = drupal_get_path('theme', $base->name) . '/template.php';
+          }
+          // Changing current registry for the new record.
+          $theme_registry[$name] = $cache[$name];
+        }
+
+        // Look for template suggestions.
+        foreach ($cache as $cache_name => $cache_hook) {
+          if (strpos($cache_name, $name . '__') !== FALSE) {
+            $cache_hook['includes'][] = drupal_get_path('theme', $theme->name) . '/template.php';
+            foreach ($base_theme as $base) {
+              $cache_hook['includes'][] = drupal_get_path('theme', $base->name) . '/template.php';
+            }
+            // Changing current registry for the new record.
+            $theme_registry[$cache_name] = $cache_hook;
+          }
+        }
+      }
+    }
+  }
+  $recursion_prevention = FALSE;
+}
+
+
+/**
+ * Helper function to retrieve the key of the theme to render the emails.
+ */
+function _simplenews_get_theme() {
+  global $theme_key;
+
+  $theme = variable_get('simplenews_theme', 'current');
+  switch ($theme) {
+    case 'default':
+      $theme = variable_get('theme_default', NULL);
+      break;
+    case 'current':
+      $theme = $theme_key;
+      break;
+    case 'domain':
+      // Fetch the theme for the current domain.
+      if (module_exists('domain_theme')) {
+        // Assign the selected theme, based on the active domain.
+        global $_domain;
+        $domain_theme = domain_theme_lookup($_domain['domain_id']);
+        // The above returns -1 on failure.
+        $theme = ($domain_theme != -1) ? $domain_theme['theme'] : $theme_key;
+      }
+      break;
+  }
+
+  return $theme;
 }
\ No newline at end of file
diff --git a/theme/simplenews-newsletter-body.tpl.php b/theme/simplenews-newsletter-body.tpl.php
index a77df85..785c062 100644
--- a/theme/simplenews-newsletter-body.tpl.php
+++ b/theme/simplenews-newsletter-body.tpl.php
@@ -14,8 +14,7 @@
  * Available variables:
  * - $build: Array as expected by render().
  * - $title: Node title
- * - $language: Language object
- * - $view_mode: Active view mode.
+ * - $simplenews_theme: Contains the path to the configured simplenews theme.
  *
  * @see template_preprocess_simplenews_newsletter_body()
  * @see theme_simplenews_newsletter_body()
diff --git a/theme/simplenews-newsletter-footer.tpl.php b/theme/simplenews-newsletter-footer.tpl.php
index 7c3d023..25a224f 100644
--- a/theme/simplenews-newsletter-footer.tpl.php
+++ b/theme/simplenews-newsletter-footer.tpl.php
@@ -3,9 +3,9 @@
 /**
  * @file
  * Default theme implementation to format the simplenews newsletter footer.
- * 
+ *
  * Copy this file in your theme directory to create a custom themed footer.
- * Rename it to simplenews-newsletter-footer--<tid>.tpl.php to override it for a 
+ * Rename it to simplenews-newsletter-footer--<tid>.tpl.php to override it for a
  * newsletter using the newsletter term's id.
  *
  * @todo Update the available variables.
@@ -16,6 +16,7 @@
  * - $format: newsletter format [plain|html]
  * - $unsubscribe_text: unsubscribe text
  * - $test_message: test message warning message
+ * - $simplenews_theme: Contains the path to the configured simplenews theme.
  *
  * Available tokens:
  * - [simplenews-subscriber:unsubscribe-url]: unsubscribe url to be used as link
