diff --git a/extension/Documentation/Manual.rst b/extension/Documentation/Manual.rst
index 7b0f91b13000f9bdb7ef061a8c29aabe8ac6034a..446620aab135fef5d3f2647153fa3f443f1aeb5b 100644
--- a/extension/Documentation/Manual.rst
+++ b/extension/Documentation/Manual.rst
@@ -3732,8 +3732,9 @@ Type: sendmail
   * *sendMailXId* = `<string>` - Will be copied to the mailLog record. Helps to setup specific logfile queries.
   * *sendMailXId2* = `<string>` - Will be copied to the mailLog record. Helps to setup specific logfile queries.
   * *sendMailXId3* = `<string>` - Will be copied to the mailLog record. Helps to setup specific logfile queries.
-  * *sendMailSubjectHtmlEntity* = `<string>` - **encode|decode|none** - the mail subject will htmlspecialchar() encoded / decoded (default) or none (untouched).
-  * *sendMailBodyHtmlEntity*= `<string>`  - **encode|decode|none** - the mail body will htmlspecialchar() encoded, decoded (default) or none (untouched).
+  * *sendMailMode* = `<string>` - **html** - if set, the e-mail body will be rendered as html.
+  * *sendMailSubjectHtmlEntity* = `<string>` - **encode|decode|none** - the mail subject will be htmlspecialchar() encoded / decoded (default) or none (untouched).
+  * *sendMailBodyHtmlEntity*= `<string>`  - **encode|decode|none** - the mail body will be htmlspecialchar() encoded, decoded (default) or none (untouched).
 
 * To use values of the submitted form, use the STORE_FORM. E.g. `{{name:F:allbut}}`
 * To use the `id` of a new created or already existing primary record, use the STORE_RECORD. E.g. `{{id:R}}`.
@@ -5616,7 +5617,7 @@ The following parameters can also be written as complete words for ease of use:
     to:<email[,email]>|from:<email>|subject:<subject>|body:<body>
         [|cc:<email[,email]]>[|bcc:<email[,email]]>[|reply-to:<email>]
         [|autosubmit:<on/off>][|grid:<grid>][|xid:<xId>][|xid2:<xId2>][|xid3:<xId3>][|header:<mail header>]
-        [|M:html]
+        [|mode:html]
 
 Send emails. Every mail will be logged in the table `mailLog`. Attachments are supported.
 
diff --git a/extension/qfq/external/AutoCron.php b/extension/qfq/external/AutoCron.php
index 5d921e915773d9ec3a23f8033cc5a8367c0c13e9..0dc3ad9f7d3ed08035ce516e48e6741c1ca25bb2 100644
--- a/extension/qfq/external/AutoCron.php
+++ b/extension/qfq/external/AutoCron.php
@@ -202,7 +202,8 @@ class AutoCron {
     private function mailEntryFill(array $mailEntry) {
         foreach ([FE_SENDMAIL_TO, FE_SENDMAIL_CC, FE_SENDMAIL_BCC, FE_SENDMAIL_FROM, FE_SENDMAIL_SUBJECT,
                      FE_SENDMAIL_REPLY_TO, FE_SENDMAIL_FLAG_AUTO_SUBMIT, FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID,
-                     FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3] as $key) {
+                     FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3, FE_SENDMAIL_BODY_MODE,
+                     FE_SENDMAIL_BODY_HTML_ENTITY, FE_SENDMAIL_SUBJECT_HTML_ENTITY] as $key) {
             if (!isset($mailEntry[$key])) {
                 $mailEntry[$key] = '';
             }
@@ -253,6 +254,9 @@ class AutoCron {
             $mail[SENDMAIL_TOKEN_RECEIVER_BCC] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_BCC]);
             $mail[SENDMAIL_TOKEN_X_ID2] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_X_ID2]);
             $mail[SENDMAIL_TOKEN_X_ID3] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_X_ID3]);
+            $mail[SENDMAIL_TOKEN_BODY_MODE] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_BODY_MODE]);
+            $mail[SENDMAIL_TOKEN_BODY_HTML_ENTITY] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_BODY_HTML_ENTITY]);
+            $mail[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY] = $this->evaluate->parse($mailEntry[FE_SENDMAIL_SUBJECT_HTML_ENTITY]);
 
             $mail[SENDMAIL_TOKEN_SRC] = "AutoCron: Cron.id=" . $job[COLUMN_ID];
 
diff --git a/extension/qfq/qfq/Constants.php b/extension/qfq/qfq/Constants.php
index 53313c886e388a011244497e1f0c64a0eabdf848..e999fa0cbfff45beaa61b057c0360e43a38106e3 100644
--- a/extension/qfq/qfq/Constants.php
+++ b/extension/qfq/qfq/Constants.php
@@ -975,9 +975,10 @@ const FE_SENDMAIL_GR_ID = 'sendMailGrId'; // gr_id: used to classify mail log en
 const FE_SENDMAIL_X_ID = 'sendMailXId'; // x_id: used to classify mail log entries ind table mailLog
 const FE_SENDMAIL_X_ID2 = 'sendMailXId2'; // x_id: used to classify mail log entries ind table mailLog
 const FE_SENDMAIL_X_ID3 = 'sendMailXId3'; // x_id: used to classify mail log entries ind table mailLog
-const FE_SENDMAIL_SUBJECT_HTML_ENTITY = 'sendMailSubjectHtmlEntity'; // encode|decode  >> DECODE, ENCODE
-const FE_SENDMAIL_BODY_HTML_ENTITY = 'sendMailBodyHtmlEntity'; // encode | decode  >> DECODE, ENCODE
-const FE_SENDMAIL_ATTACHMENT = 'sendMailAttachment'; // x_id: used to classify mail log entries in table mailLog
+const FE_SENDMAIL_SUBJECT_HTML_ENTITY = 'sendMailSubjectHtmlEntity'; // encode|decode|none  >> DECODE, ENCODE, NONE
+const FE_SENDMAIL_BODY_HTML_ENTITY = 'sendMailBodyHtmlEntity'; // encode|decode|none  >> DECODE, ENCODE, NONE
+const FE_SENDMAIL_ATTACHMENT = 'sendMailAttachment';
+const FE_SENDMAIL_BODY_MODE = 'sendMailMode'; // html >> render body as html
 const FE_AUTOFOCUS = 'autofocus'; // value: <none>|0|1  , <none>==1, this element becomes the focus during form load.
 const FE_RETYPE = 'retype'; // value: <none>|0|1  , <none>==1, this element becomes the focus during form load.
 const FE_RETYPE_LABEL = 'retypeLabel'; // value: label text for retype FormElement
diff --git a/extension/qfq/qfq/form/FormAction.php b/extension/qfq/qfq/form/FormAction.php
index c816f8dc3b8eaaa446708013c4f74dfd54dcfd10..6f51f161d73bb1ee00f45c9cae588c6627f2aa6c 100644
--- a/extension/qfq/qfq/form/FormAction.php
+++ b/extension/qfq/qfq/form/FormAction.php
@@ -271,6 +271,9 @@ class FormAction {
         $args[] = SENDMAIL_TOKEN_SRC . PARAM_TOKEN_DELIMITER . "FormId: " . $feSpecAction[FE_FORM_ID] . ", FormElementId: " . $feSpecAction['id'];
         $args[] = SENDMAIL_TOKEN_X_ID2 . PARAM_TOKEN_DELIMITER . $this->evaluate->parse($feSpecAction[FE_SENDMAIL_X_ID2]);
         $args[] = SENDMAIL_TOKEN_X_ID3 . PARAM_TOKEN_DELIMITER . $this->evaluate->parse($feSpecAction[FE_SENDMAIL_X_ID3]);
+        $args[] = SENDMAIL_TOKEN_BODY_MODE . PARAM_TOKEN_DELIMITER . $this->evaluate->parse($feSpecAction[FE_SENDMAIL_BODY_MODE]);
+        $args[] = SENDMAIL_TOKEN_BODY_HTML_ENTITY . PARAM_TOKEN_DELIMITER . $this->evaluate->parse($feSpecAction[FE_SENDMAIL_BODY_HTML_ENTITY]);
+        $args[] = SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY . PARAM_TOKEN_DELIMITER . $this->evaluate->parse($feSpecAction[FE_SENDMAIL_SUBJECT_HTML_ENTITY]);
         $args[] = $this->evaluate->parse($feSpecAction[FE_SENDMAIL_ATTACHMENT]);
 
         // Mail: send
@@ -434,28 +437,6 @@ class FormAction {
         return false;
     }
 
-    /**
-     * Set all necessary keys - subsequent 'isset()' are not necessary anymore.
-     *
-     * @param array $fe
-     *
-     * @return array
-     */
-    private function initActionFormElement(array $fe) {
-
-        $list = [FE_TYPE, FE_SLAVE_ID, FE_SQL_VALIDATE, FE_SQL_BEFORE, FE_SQL_INSERT, FE_SQL_UPDATE, FE_SQL_DELETE,
-            FE_SQL_AFTER, FE_EXPECT_RECORDS, FE_REQUIRED_LIST, FE_MESSAGE_FAIL, FE_SENDMAIL_TO, FE_SENDMAIL_CC,
-            FE_SENDMAIL_BCC, FE_SENDMAIL_FROM, FE_SENDMAIL_SUBJECT, FE_SENDMAIL_REPLY_TO, FE_SENDMAIL_FLAG_AUTO_SUBMIT,
-            FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID];
-
-        foreach ($list as $key) {
-            Support::setIfNotSet($fe, $key);
-        }
-
-        return $fe;
-    }
-
-
     /**
      * Will be called for each master record (clipboard).
      * Process all FE.type='paste' for the given master record in clipboard.
diff --git a/extension/qfq/qfq/helper/HelperFormElement.php b/extension/qfq/qfq/helper/HelperFormElement.php
index 350ff69e224bfb3fd8fd6ef3f2bf7845fd2197db..b2640c4b123022e0a5c20023a08560b448a2970c 100644
--- a/extension/qfq/qfq/helper/HelperFormElement.php
+++ b/extension/qfq/qfq/helper/HelperFormElement.php
@@ -266,7 +266,8 @@ class HelperFormElement {
         $list = [FE_TYPE, FE_SLAVE_ID, FE_SQL_VALIDATE, FE_SQL_BEFORE, FE_SQL_INSERT, FE_SQL_UPDATE, FE_SQL_DELETE,
             FE_SQL_AFTER, FE_EXPECT_RECORDS, FE_REQUIRED_LIST, FE_MESSAGE_FAIL, FE_SENDMAIL_TO, FE_SENDMAIL_CC,
             FE_SENDMAIL_BCC, FE_SENDMAIL_FROM, FE_SENDMAIL_SUBJECT, FE_SENDMAIL_REPLY_TO, FE_SENDMAIL_FLAG_AUTO_SUBMIT,
-            FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID, FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3];
+            FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID, FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3, FE_SENDMAIL_BODY_MODE,
+            FE_SENDMAIL_BODY_HTML_ENTITY, FE_SENDMAIL_SUBJECT_HTML_ENTITY];
 
         foreach ($list as $key) {
             Support::setIfNotSet($fe, $key);
diff --git a/extension/qfq/qfq/report/SendMail.php b/extension/qfq/qfq/report/SendMail.php
index 87fc4a3a8e2820b2f2ab79b5d2d475dfe28320b5..0b6751fca4e736f0b7bcad59a5fbfabce8b7463d 100644
--- a/extension/qfq/qfq/report/SendMail.php
+++ b/extension/qfq/qfq/report/SendMail.php
@@ -100,12 +100,16 @@ class SendMail {
         }
 
         // Subject
-        if (empty($mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY]) || $mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY] !== MODE_ENCODE) {
+        if (empty($mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY]) ||
+            ($mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY] !== MODE_ENCODE &&
+                $mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY] !== MODE_NONE)) {
             $mailConfig[SENDMAIL_TOKEN_SUBJECT_HTML_ENTITY] = MODE_DECODE;
         }
 
         // Body
-        if (empty($mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY]) || $mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY] !== MODE_ENCODE) {
+        if (empty($mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY]) ||
+            ($mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY] !== MODE_ENCODE &&
+                $mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY] !== MODE_NONE)) {
             $mailConfig[SENDMAIL_TOKEN_BODY_HTML_ENTITY] = MODE_DECODE;
         }
 
@@ -171,7 +175,7 @@ class SendMail {
 
             $encodedSubject = Support::escapeDoubleTick($encodedSubject); // now, escape double ticks.
 
-            $args[] = '-u "' . $encodedSubject . '"';;
+            $args[] = '-u "' . $encodedSubject . '"';
         }
 
         if (!empty($mailConfig[SENDMAIL_TOKEN_BODY])) {
@@ -312,23 +316,14 @@ class SendMail {
                         unset($attach[$key]);
                         break;
 
-                    case SENDMAIL_TOKEN_DOWNLOAD_MODE:
-                        $downloadMode = substr($element, 2);
-                        unset($attach[$key]);
-                        break;
-
                     case SENDMAIL_TOKEN_ATTACHMENT_FILE:
-                        if ($downloadMode == '') { // Set only if not explicit given.
-                            $downloadMode = DOWNLOAD_MODE_FILE;
-                        }
+                        $downloadMode = DOWNLOAD_MODE_FILE;
                         break;
 
                     case SENDMAIL_TOKEN_ATTACHMENT_URL:
                     case SENDMAIL_TOKEN_ATTACHMENT_URL_PARAM:
                     case SENDMAIL_TOKEN_ATTACHMENT_PAGE:
-                        if ($downloadMode == '') { // Set only if not explicit given.
-                            $downloadMode = DOWNLOAD_MODE_PDF;
-                        }
+                        $downloadMode = DOWNLOAD_MODE_PDF;
                         break;
 
                     default:
diff --git a/extension/qfq/tests/phpunit/HelperFormElementTest.php b/extension/qfq/tests/phpunit/HelperFormElementTest.php
index c944813f31bbe2a3c725b9768ff683ecdcb59730..fc6d2517bd80f842ea1b0935508291e27cc79df5 100644
--- a/extension/qfq/tests/phpunit/HelperFormElementTest.php
+++ b/extension/qfq/tests/phpunit/HelperFormElementTest.php
@@ -111,7 +111,8 @@ class HelperFormElementTest extends TestCase {
         $list = [FE_TYPE, FE_SLAVE_ID, FE_SQL_VALIDATE, FE_SQL_BEFORE, FE_SQL_INSERT, FE_SQL_UPDATE, FE_SQL_DELETE,
             FE_SQL_AFTER, FE_EXPECT_RECORDS, FE_REQUIRED_LIST, FE_MESSAGE_FAIL, FE_SENDMAIL_TO, FE_SENDMAIL_CC,
             FE_SENDMAIL_BCC, FE_SENDMAIL_FROM, FE_SENDMAIL_SUBJECT, FE_SENDMAIL_REPLY_TO, FE_SENDMAIL_FLAG_AUTO_SUBMIT,
-            FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID, FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3];
+            FE_SENDMAIL_GR_ID, FE_SENDMAIL_X_ID, FE_SENDMAIL_X_ID2, FE_SENDMAIL_X_ID3, FE_SENDMAIL_BODY_MODE,
+            FE_SENDMAIL_BODY_HTML_ENTITY, FE_SENDMAIL_SUBJECT_HTML_ENTITY];
 
         $expect = array();
         foreach ($list as $key) {