 reroute_email.admin.inc | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
 reroute_email.module    | 39 +++++++++++++++++++++++++++++++++-----
 2 files changed, 84 insertions(+), 5 deletions(-)

diff --git a/reroute_email.admin.inc b/reroute_email.admin.inc
index 25348e9..d755d27 100644
--- a/reroute_email.admin.inc
+++ b/reroute_email.admin.inc
@@ -51,3 +51,53 @@ function reroute_email_settings_validate($form, $form_state) {
     }
   }
 }
+
+/**
+ * Form for sending test messages.
+ */
+function reroute_email_test_email_form() {
+  return array(
+    'addresses' => array(
+      '#type' => 'fieldset',
+      'to' => array(
+        '#type' => 'textfield',
+        '#title' => t('To'),
+        '#required' => TRUE,
+      ),
+      'cc' => array(
+        '#type' => 'textfield',
+        '#title' => t('Cc'),
+      ),
+      'bcc' => array(
+        '#type' => 'textfield',
+        '#title' => t('Bcc'),
+      ),
+    ),
+    'subject' => array(
+      '#type' => 'textfield',
+      '#title' => t('Subject'),
+      '#default_value' => t('Reroute Email Test'),
+    ),
+    'body' => array(
+      '#type' => 'textarea',
+      '#title' => t('Body'),
+    ),
+    'submit' => array(
+      '#type' => 'submit',
+      '#value' => t('Send email'),
+    ),
+  );
+}
+
+/**
+ * Submit handler for email test.
+ */
+function reroute_email_test_email_form_submit(&$form, &$form_state) {
+  $to = $form_state['values']['to'];
+  $param_keys = array('cc', 'bcc', 'subject', 'body');
+  $params = array_intersect_key($form_state['values'], array_flip($param_keys));
+  $message = drupal_mail('reroute_email', 'test_email_form', $to, language_default(), $params);
+  if (!empty($message['result'])) {
+    drupal_set_message(t("Test email submitted for delivery."));
+  }
+}
diff --git a/reroute_email.module b/reroute_email.module
index 331b5ce..db41f0d 100644
--- a/reroute_email.module
+++ b/reroute_email.module
@@ -34,11 +34,27 @@ function reroute_email_menu() {
   $items = array();
 
   $items['admin/config/development/reroute_email'] = array(
-    'title'              => 'Reroute Email',
-    'description'        => 'Reroute emails to a test address.',
-    'page callback'      => 'drupal_get_form',
-    'page arguments'     => array('reroute_email_settings'),
-    'access arguments'   => array('administer reroute email'),
+    'title' => 'Reroute Email',
+    'description' => 'Reroute emails to a test address.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('reroute_email_settings'),
+    'access arguments' => array('administer reroute email'),
+    'file' => 'reroute_email.admin.inc',
+  );
+
+  $items['admin/config/development/reroute_email/settings'] = array(
+    'title' => 'Settings',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['admin/config/development/reroute_email/test'] = array(
+    'title' => 'Test email form',
+    'type' => MENU_LOCAL_TASK,
+    'description' => 'Form for sending test email.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('reroute_email_test_email_form'),
+    'access arguments' => array('administer reroute email'),
     'file' => 'reroute_email.admin.inc',
   );
 
@@ -115,3 +131,16 @@ function reroute_email_mail_alter(&$message) {
     }
   }
 }
+
+/**
+ * Implements hook_mail().
+ */
+function reroute_email_mail($key, &$message, $params) {
+  if ($key != 'test_email_form') {
+    return;
+  }
+  $message['headers']['Cc'] = $params['cc'];
+  $message['headers']['Bcc'] = $params['bcc'];
+  $message['subject'] = $params['subject'];
+  $message['body'][] = $params['body'];
+}
