diff --git a/smtp.admin.inc b/smtp.admin.inc
index 6bfc86e..5320213 100644
--- a/smtp.admin.inc
+++ b/smtp.admin.inc
@@ -34,6 +34,13 @@ function smtp_admin_settings() {
     '#options'       => array(1 => t('On'), 0 => t('Off')),
     '#description'   => t('To uninstall this module you must turn it off here first.'),
   );
+  $form['onoff']['smtp_deliver'] = array(
+    '#type'          => 'radios',
+    '#title'         => t('Turn on delivery of emails'),
+    '#default_value' => variable_get('smtp_deliver', 1),
+    '#options'       => array(1 => t('On'), 0 => t('Off')),
+    '#description'   => t('With this option turned off, email messages will be queued up and processed as normal, but not actually delivered. This option should only be used for testing purposes.'),
+  );
   $form['onoff']['smtp_queue'] = array(
     '#type'  => 'checkbox',
     '#title' => t('Send mail by queue'),
diff --git a/smtp.install b/smtp.install
index dff9eb1..e188b9d 100644
--- a/smtp.install
+++ b/smtp.install
@@ -32,6 +32,7 @@ function smtp_uninstall() {
   variable_del('smtp_debugging');
   variable_del('smtp_client_hostname');
   variable_del('smtp_client_helo');
+  variable_del('smtp_deliver');
 }
 
 /**
diff --git a/smtp.mail.inc b/smtp.mail.inc
index 6c85841..d4d0ba4 100644
--- a/smtp.mail.inc
+++ b/smtp.mail.inc
@@ -593,26 +593,37 @@ public function mailWithoutQueue(array $message) {
     }
 
     $error = FALSE;
-    if (!$mailer->send()) {
-      $params = array(
-        '@from' => $from,
-        '@to' => $to,
-        '!error_message' => $mailer->ErrorInfo
-      );
 
-      if (variable_get('smtp_queue_fail', FALSE)) {
-        if ($logging) {
-          watchdog('smtp', 'Error sending e-mail from @from to @to, will retry on cron run : !error_message.', $params, WATCHDOG_ERROR);
-        }
-        smtp_failed_messages($message);
-      }
-      elseif ($logging) {
-        $error = TRUE;
-        watchdog('smtp', 'Error sending e-mail from @from to @to : !error_message', $params, WATCHDOG_ERROR);
+    // Email delivery was disabled.
+    if (!variable_get('smtp_deliver', TRUE)) {
+      if ($logging) {
+        $params = array(
+          '@from' => $from,
+          '@to' => $to,
+        );
+        watchdog('smtp', 'Email delivery is disabled, did not send email from @from to @to.', $params);
       }
     }
     else {
-      if (variable_get('smtp_debugging', SMTP_LOGGING_ERRORS) == SMTP_LOGGING_ALL) {
+      if (!$mailer->send()) {
+        $params = array(
+          '@from' => $from,
+          '@to' => $to,
+          '!error_message' => $mailer->ErrorInfo
+        );
+
+        if (variable_get('smtp_queue_fail', FALSE)) {
+          if ($logging) {
+            watchdog('smtp', 'Error sending e-mail from @from to @to, will retry on cron run : !error_message.', $params, WATCHDOG_ERROR);
+          }
+          smtp_failed_messages($message);
+        }
+        elseif ($logging) {
+          $error = TRUE;
+          watchdog('smtp', 'Error sending e-mail from @from to @to : !error_message', $params, WATCHDOG_ERROR);
+        }
+      }
+      elseif (variable_get('smtp_debugging', SMTP_LOGGING_ERRORS) == SMTP_LOGGING_ALL) {
         watchdog('smtp', 'Sent mail to: @to', array('@to' => $to));
       }
     }
