diff --git a/includes/simplenews.mail.inc b/includes/simplenews.mail.inc
index 8bbe107..13606c2 100644
--- a/includes/simplenews.mail.inc
+++ b/includes/simplenews.mail.inc
@@ -205,6 +205,9 @@ function simplenews_send_source(SimplenewsSourceInterface $source) {
  * @param $conditions
  *   (Optional) Array of spool conditions which are applied to the query.
  *
+ * @return
+ *   Returns the amount of sent mails.
+ *
  * @ingroup spool
  */
 function simplenews_mail_spool($limit = SIMPLENEWS_UNLIMITED, array $conditions = array()) {
@@ -243,7 +246,7 @@ function simplenews_mail_spool($limit = SIMPLENEWS_UNLIMITED, array $conditions
       // Check every n emails if we exceed the limit.
       // When PHP maximum execution time is almost elapsed we interrupt
       // sending. The remainder will be sent during the next cron run.
-      if (++$check_counter >= SIMPLENEWS_SEND_CHECK_INTERVAL) {
+      if (++$check_counter >= SIMPLENEWS_SEND_CHECK_INTERVAL && ini_get('max_execution_time') > 0) {
         $check_counter = 0;
         // Break the sending if a percentage of max execution time was exceeded.
         $elapsed = _simplenews_measure_usec();
@@ -280,6 +283,7 @@ function simplenews_mail_spool($limit = SIMPLENEWS_UNLIMITED, array $conditions
     variable_set('simplenews_last_sent', $count_success);
 
     simplenews_revert_user();
+    return $count_success;
   }
 }
 
@@ -468,7 +472,7 @@ function simplenews_count_spool(array $conditions = array()) {
 
   $query->addExpression('COUNT(*)', 'count');
 
-  return $query
+  return (int)$query
     ->execute()
     ->fetchField();
 }
diff --git a/simplenews.drush.inc b/simplenews.drush.inc
new file mode 100644
index 0000000..1b63bcf
--- /dev/null
+++ b/simplenews.drush.inc
@@ -0,0 +1,90 @@
+<?php
+
+
+/**
+ * Implements hook_drush_command().
+ */
+function simplenews_drush_command() {
+  $items = array();
+
+  $items['simplenews-spool-count'] = array(
+    'description' => 'Print the current simplenews mail spool count',
+    'aliases' => array('sn-sc'),
+    'drupal dependencies' => array('simplenews'),
+    'options' => array(
+      'pipe' => dt('Just print the count value to allow parsing'),
+    )
+  );
+
+  $items['simplenews-spool-send'] = array(
+    'description' => 'Send the defined amount of mail spool entries.',
+    'examples' => array(
+      'drush sn-ss' => dt('Send the default amount of mails, as defined by the simplenews_throttle variable.'),
+      'drush sn-ss 0' => dt('Send all mails.'),
+      'drush sn-ss 100' => dt('Send 100 mails'),
+    ),
+    'options' => array(
+      'pipe' => dt('Just print the sent and remaining count on separate lines to allow parsing'),
+    ),
+    'aliases' => array('sn-ss'),
+    'drupal dependencies' => array('simplenews'),
+  );
+
+  return $items;
+}
+
+/**
+ * Drush command to count the mail spool queue.
+ */
+function drush_simplenews_spool_count() {
+  module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
+  $count = simplenews_count_spool();
+
+  $no_description = drush_get_option(array('p', 'pipe'));
+  var_dump($no_description);
+  if ($no_description) {
+    drush_print_pipe($count);
+  }
+  else {
+    drush_log(dt('Current simplenews mail spool count: @count', array('@count' => $count)), 'status');
+  }
+}
+
+/**
+ * Drush command to send the mail spool queue.
+ */
+function drush_simplenews_spool_send($limit = FALSE) {
+
+  module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
+
+  if ($limit === FALSE) {
+    $limit = variable_get('simplenews_throttle');
+  }
+  elseif ($limit == 0) {
+    $limit = SIMPLENEWS_UNLIMITED;
+  }
+
+  $start_time = microtime(TRUE);
+
+  $sent = simplenews_mail_spool($limit);
+  simplenews_clear_spool();
+  simplenews_send_status_update();
+
+  $durance = round(microtime(TRUE) - $start_time, 2);
+
+  // Report the number of sent mails.
+  if ($sent > 0) {
+    $remaining = simplenews_count_spool();
+    if (drush_get_option('pipe')) {
+      // For pipe, just print the sent first and then the remaining count.
+      drush_print_pipe($sent . " ");
+      drush_print_pipe($remaining);
+
+    }
+    else {
+      drush_log(dt('Sent @count mails from the queue in @sec seconds.', array('@count' => $sent, '@sec' => $durance)), 'status');
+      drush_log(dt('Remaining simplenews mail spool count: @count', array('@count' => $remaining)), 'status');
+    }
+  }
+
+}
\ No newline at end of file
