diff --git a/subscriptions.admin.inc b/subscriptions.admin.inc
index 71cb514..72e79d2 100644
--- a/subscriptions.admin.inc
+++ b/subscriptions.admin.inc
@@ -650,6 +650,31 @@ function subscriptions_user_settings_form(array $form, array &$form_state, $acco
     '#default_value' => _subscriptions_get_setting('digest', $account),
     '#description'   => t("Merges your notifications into a single email, sent at the interval you specify."),
   );
+  $secure_links_site = _subscriptions_get_setting('secure_links', 0);
+  $variables = array('!http' => 'http', '!https' => 'https');
+  if (empty($account)) {
+    $form['settings']['secure_links'] = array(
+      '#title'         => t('Type of links to send'),
+      '#type'          => 'select',
+      '#options'       => array(
+                             0 => t('Always !http', $variables),
+                            -1 => t('Let the user choose, default to !http', $variables),
+                            -2 => t('Let the user choose, default to !https', $variables),
+                             2 => t('Always !https', $variables)
+      ),
+      '#default_value' => $secure_links_site,
+      '#description'   => t('Set the type of the links in the notifications, depending on what protocol(s) your site support. Default is %always_http.', array('%always_http' => t('Always !http', $variables))),
+    );
+  }
+  else if ($secure_links_site < 0) {
+    $form['settings']['secure_links'] = array(
+      '#title'         => t('Type of links to send'),
+      '#type'          => 'select',
+      '#options'       => array(-1 => t('Site default'), 0 => 'http', 1 => 'https'),
+      '#default_value' => _subscriptions_get_setting('secure_links', $account),
+      '#description'   => t('Set the type of the links in the notifications. %Site_default is %default.', array('%Site_default' => t('Site default'), '%default' => (abs($secure_links_site) >= 2 ? 'https' : 'http'))),
+    );
+  }
   if (_subscriptions_get_setting('send_interval_visible', $account) == -2) {
     $intervals = _subscriptions_send_intervals();
     $interval = $intervals[_subscriptions_get_setting('send_interval', $account)];
@@ -771,6 +796,7 @@ function _subscriptions_user_settings_form_submit(array $form, array &$form_stat
       db_update('subscriptions_user')
         ->fields(array(
           'digest' => -1,
+          'secure_links' => -1,
           'send_interval' => -1,
           'send_updates' => -1,
           'send_comments' => -1,
@@ -801,6 +827,7 @@ function _subscriptions_user_settings_form_submit(array $form, array &$form_stat
     db_update('subscriptions_user')
       ->fields(array(
         'digest' => $form_state['values']['digest'],
+        'secure_links' => $form_state['values']['secure_links'],
         'send_interval' => ($uid > 0 && $send_interval_visible == - 2 ? - 1 : $form_state['values']['send_interval']),
         'send_updates' => ($uid > 0 && $send_updates_visible == - 2 ? - 1 : $form_state['values']['send_updates']),
         'send_comments' => ($uid > 0 && $send_comments_visible == - 2 ? - 1 : $form_state['values']['send_comments']),
diff --git a/subscriptions.install b/subscriptions.install
index d2b47e4..e21e98c 100644
--- a/subscriptions.install
+++ b/subscriptions.install
@@ -58,6 +58,7 @@ function subscriptions_schema() {
     'fields'                  => array(
       'uid'                   => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
       'digest'                => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => -1),
+      'secure_links'          => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => -1),
       'send_interval'         => array('type' => 'int', 'not null' => TRUE, 'default' => -1),
       'send_updates'          => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => -1),
       'send_comments'         => array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => -1),
@@ -110,6 +111,7 @@ function subscriptions_install() {
     ->fields(array(
       'uid' => -DRUPAL_AUTHENTICATED_RID,
       'digest' => 0,
+      'secure_links' => 0,
       'send_interval' => 1,
       'send_updates' => 1,
       'send_comments' => 1,
@@ -329,3 +331,18 @@ function subscriptions_update_7002() {
   }
 }
 
+/**
+ * Add the 'secure_links' column.
+ */
+function subscriptions_update_7100() {
+  db_add_field('subscriptions_user', 'secure_links', array(
+    'type' => 'int',
+    'size' => 'tiny',
+    'not null' => TRUE,
+    'default' => -1));
+  db_update('subscriptions_user')
+    ->condition('uid', -DRUPAL_AUTHENTICATED_RID)
+    ->expression('secure_links', 0)
+    ->execute();
+}
+
diff --git a/subscriptions.module b/subscriptions.module
index 6fb6086..3f2d03a 100644
--- a/subscriptions.module
+++ b/subscriptions.module
@@ -805,9 +805,14 @@ function _subscriptions_cmp_by_weight(array $a, array $b) {
 
 /**
  * Helper function to retrieve
- *   send_self/autosub_on_post/autosub_on_update/autosub_on_comment/    | 1, 0,
- *   digest/send_interval/send_updates/send_comments/                   | -1 = use default
- *   send_interval_visible/send_updates_visible/send_comments_visible/  | 1, 0, -1 = only preference, -2 = always use site default
+ *   send_self/autosub_on_post/autosub_on_update/autosub_on_comment/
+ *     | 1, 0,
+ *   digest/send_interval/send_updates/send_comments/
+ *     | -1 = use default
+ *   send_interval_visible/send_updates_visible/send_comments_visible/
+ *     | 1, 0, -1 = only preference, -2 = always use site default
+ *   secure_links
+ *     | 1, 0 for $uid>0; 1, 0, -1, -2 for -DRUPAL_AUTHENTICATED_RID
  *   uses_defaults values;
  *
  * @param string $name
@@ -839,7 +844,7 @@ function _subscriptions_get_setting($name, $account) {
   static $defaults = array();
   if (!isset($defaults[$uid][$name])) {
     $result = db_select('subscriptions_user', 'su', array('fetch' => PDO::FETCH_ASSOC))
-      ->fields('su', array('uid', 'digest', 'send_interval', 'send_updates', 'send_comments', 'send_interval_visible', 'send_updates_visible', 'send_comments_visible', 'autosub_on_post', 'autosub_on_update', 'autosub_on_comment', 'send_self'))
+      ->fields('su', array('uid', 'digest', 'secure_links', 'send_interval', 'send_updates', 'send_comments', 'send_interval_visible', 'send_updates_visible', 'send_comments_visible', 'autosub_on_post', 'autosub_on_update', 'autosub_on_comment', 'send_self'))
       ->condition('su.uid', array(-DRUPAL_AUTHENTICATED_RID, $uid), 'IN')
       ->orderBy('su.uid')
       ->execute();
@@ -867,6 +872,14 @@ function _subscriptions_get_setting($name, $account) {
       }
       return _subscriptions_get_setting($name, $uid);
     }
+
+    $secure_links_site = _subscriptions_get_setting('secure_links', NULL);
+    if ($uid > 0) {
+      if ($secure_links_site >= 0 || $defaults[$uid]['secure_links'] == -1) {
+        $defaults[$uid]['secure_links'] = (abs($secure_links_site) >= 2);
+      }
+    }
+
     $defaults[$uid]['uses_defaults'] = FALSE;
     foreach ($defaults[$uid] as $key => $value) {
       if ($value < 0) {  // not set, use site dft
diff --git a/subscriptions_mail.cron.inc b/subscriptions_mail.cron.inc
index c9cd8d0..9e34584 100644
--- a/subscriptions_mail.cron.inc
+++ b/subscriptions_mail.cron.inc
@@ -333,9 +333,44 @@ function _subscriptions_mail_send($module, $mailkey, $name, $to, $from, $uid, $s
 /**
  * Implements hook_mail_alter().
  *
+ * Optionally change links to use HTTPS, but only for Subscriptions mails.
+ *
  * @param $message
  */
-function subscriptions_mail_mail_alter(&$message) {
+function _subscriptions_mail_mail_alter(array &$message) {
+  global $user;
+  static $site_url = NULL;
+  static $replacement;
+
+  if (!_subscriptions_mail_cron_is_running()) {
+    return;
+  }
+
+  if (!isset($site_url)) {
+    $site_url = url('', array('absolute' => TRUE));
+    if (dpm(_subscriptions_get_setting('secure_links', $user)) > 0) {
+      if (strpos($site_url, 'http:') === 0) {
+        $site_url = $replacement[$site_url] = 'https:' . substr($site_url, 5);
+      }
+    }
+    else {
+      if (strpos($site_url, 'https:') === 0) {
+        $site_url = $replacement[$site_url] = 'http:' . substr($site_url, 6);
+      }
+    }
+  }
+
+  if (!empty($replacement)) {
+    $msg = strtr($message['body'][0], $replacement);
+    while (preg_match("#(?P<before>(.*)(<[aA] +)(href|HREF)=([\"']))/(?P<after>.*)$#sAD", $msg, $matches)) {
+      $msg = $matches['before'] . $site_url . $matches['after'];
+    }
+    while (preg_match("#(?P<before>(.*)<(img|IMG) +(src|SRC)=([\"']))/(?P<after>.*)$#sAD", $msg, $matches)) {
+      $msg = $matches['before'] . $site_url . $matches['after'];
+    }
+    $message['body'][0] = $msg;
+  }
+
   /* Comment this line for debugging...
   dpm($message, 'drupal_mail() is disabled in subscriptions_mail_mail_alter(); this would be sent');
   $message['to'] = '';
diff --git a/subscriptions_mail.module b/subscriptions_mail.module
index 7c920c6..952d6f5 100644
--- a/subscriptions_mail.module
+++ b/subscriptions_mail.module
@@ -31,7 +31,33 @@ function subscriptions_mail_menu() {
  */
 function subscriptions_mail_cron() {
   _subscriptions_mail_module_load_include('cron.inc');
+  _subscriptions_mail_cron_is_running(TRUE);
   _subscriptions_mail_cron();
+  _subscriptions_mail_cron_is_running(FALSE);
+}
+
+/**
+ * Helper function to remember whether cron is running.
+ */
+function _subscriptions_mail_cron_is_running($value = NULL) {
+  static $cron_is_running = FALSE;
+  if (isset($value)) {
+    $cron_is_running = $value;
+  }
+  return $cron_is_running;
+}
+
+/**
+ * Implements hook_mail_alter().
+ *
+ * Optionally change links to use HTTPS, but only for Subscriptions mails.
+ *
+ * @param $message
+ */
+function subscriptions_mail_mail_alter(array &$message) {
+  if (_subscriptions_mail_cron_is_running()) {
+    _subscriptions_mail_mail_alter($message);
+  }
 }
 
 /**
@@ -264,6 +290,9 @@ function _subscriptions_mail_check_baseurl($interactive) {
   }
 }
 
+/**
+ * Implements hook_entity_info_alter().
+ */
 function subscriptions_mail_entity_info_alter(&$entity_info) {
   $entity_info['node']['view modes'] += array(
     'subscriptions' => array(
