diff --git a/config/install/simplenews.settings.yml b/config/install/simplenews.settings.yml
index 4f97ead..7bfc9e2 100644
--- a/config/install/simplenews.settings.yml
+++ b/config/install/simplenews.settings.yml
@@ -11,6 +11,7 @@ subscriber:
 subscription:
   skip_verification: FALSE
   tidy_unconfirmed: 7
+  text_format: ''
   confirm_combined_subject: "Confirmation for [site:name]"
   confirm_combined_body: "We have received a request for the following subscription changes for [simplenews-subscriber:mail] at [site:url]:\r\n\r\n[changes-list]\r\n\r\nTo confirm please use the link below.\r\n\r\n[simplenews-subscriber:combined-url]"
   confirm_combined_body_unchanged: "We have received a request for the following subscription changes for [simplenews-subscriber:mail] at [site:url]:\r\n\r\n[changes-list]\r\n\r\nNo confirmation necessary because all requested changes equal the current state."
diff --git a/config/schema/simplenews.schema.yml b/config/schema/simplenews.schema.yml
index 80ed1c6..c7c2382 100644
--- a/config/schema/simplenews.schema.yml
+++ b/config/schema/simplenews.schema.yml
@@ -40,6 +40,9 @@ simplenews.settings:
         skip_verification:
           type: boolean
           label: Skip verification for anonymous users
+        text_format:
+          type: string
+          label: 'Text format'
         tidy_unconfirmed:
           type: integer
           label: Tidy unconfirmed subscriptions after a number of days
diff --git a/simplenews.install b/simplenews.install
index 4711ad4..cb3477b 100644
--- a/simplenews.install
+++ b/simplenews.install
@@ -309,3 +309,12 @@ function simplenews_update_830003() {
     $type->save();
   }
 }
+
+/**
+ * Initialize text format setting.
+ */
+function simplenews_update_830004() {
+  $config = \Drupal::configFactory()->getEditable('simplenews.settings');
+  $config->set('subscription.text_format', '');
+  $config->save();
+}
\ No newline at end of file
diff --git a/simplenews.module b/simplenews.module
index 3b119ed..ab3cb7e 100644
--- a/simplenews.module
+++ b/simplenews.module
@@ -978,5 +978,7 @@ function simplenews_token_replace_body($text, array $data = [], array $options =
   // formatter. The output must remain as markup. The default mail plugin will
   // automatically convert to text. A plugin that supports HTML can send the
   // markup directly.
-  return Markup::create(check_markup(\Drupal::token()->replace($text, $data, $options)));
+  $config = \Drupal::config('simplenews.settings');
+  $format = $config->get('subscription.text_format') ?: filter_fallback_format();
+  return Markup::create(check_markup(\Drupal::token()->replace($text, $data, $options), $format));
 }
diff --git a/src/Form/SubscriptionSettingsForm.php b/src/Form/SubscriptionSettingsForm.php
index 2e914f5..8dceb3a 100644
--- a/src/Form/SubscriptionSettingsForm.php
+++ b/src/Form/SubscriptionSettingsForm.php
@@ -65,6 +65,17 @@ class SubscriptionSettingsForm extends ConfigFormBase {
       '#collapsible' => FALSE,
     ];
 
+    foreach (filter_formats($this->currentUser()) as $format) {
+      $formats[$format->id()] = $format->label();
+    }
+    $form['subscription_mail']['simplenews_format'] = [
+      '#type' => 'select',
+      '#title' => t('Text format'),
+      '#options' => $formats,
+      '#description' => $this->t('This setting allows sending of HTML format subscription mails. Note that special characters must be escaped.'),
+      '#default_value' => $config->get('subscription.text_format') ?: filter_fallback_format(),
+    ];
+
     if (\Drupal::moduleHandler()->moduleExists('token')) {
       $form['subscription_mail']['token_help'] = [
         '#title' => $this->t('Replacement patterns'),
@@ -151,6 +162,7 @@ class SubscriptionSettingsForm extends ConfigFormBase {
     $this->config('simplenews.settings')
       ->set('subscription.skip_verification', $form_state->getValue('simplenews_verification'))
       ->set('subscription.tidy_unconfirmed', $form_state->getValue('simplenews_tidy_unconfirmed'))
+      ->set('subscription.text_format', $form_state->getValue('simplenews_format'))
       ->set('subscription.confirm_combined_subject', $form_state->getValue('simplenews_confirm_combined_subject'))
       ->set('subscription.confirm_combined_body', $form_state->getValue('simplenews_confirm_combined_body'))
       ->set('subscription.confirm_combined_body_unchanged', $form_state->getValue('simplenews_confirm_combined_body_unchanged'))
