diff --git a/build/media_source/system/js/fields/joomla-field-send-test-mail.w-c.es6.js b/build/media_source/system/js/fields/joomla-field-send-test-mail.w-c.es6.js
index 669625c707649..d2daf4ed32b5e 100644
--- a/build/media_source/system/js/fields/joomla-field-send-test-mail.w-c.es6.js
+++ b/build/media_source/system/js/fields/joomla-field-send-test-mail.w-c.es6.js
@@ -62,9 +62,13 @@
if (typeof response.messages === 'object' && response.messages !== null) {
Joomla.renderMessages(response.messages);
}
+
+ document.body.scrollIntoView({ behavior: 'smooth' });
},
onError: (xhr) => {
Joomla.renderMessages(Joomla.ajaxErrorsMessages(xhr));
+
+ document.body.scrollIntoView({ behavior: 'smooth' });
},
});
}
diff --git a/libraries/src/Mail/MailTemplate.php b/libraries/src/Mail/MailTemplate.php
index 935f3c0bcd438..839bff3a269bf 100644
--- a/libraries/src/Mail/MailTemplate.php
+++ b/libraries/src/Mail/MailTemplate.php
@@ -189,7 +189,7 @@ public function send()
/** @var Registry $params */
$params = $mail->params;
- $app = Factory::getApplication();
+ $app = Factory::getApplication();
if ($config->get('alternative_mailconfig'))
{
@@ -220,29 +220,41 @@ public function send()
$app->triggerEvent('onMailBeforeRendering', array($this->template_id, &$this));
- $mail->subject = $this->replaceTags(Text::_($mail->subject), $this->data);
- $this->mailer->setSubject($mail->subject);
+ $subject = $this->replaceTags(Text::_($mail->subject), $this->data);
+ $this->mailer->setSubject($subject);
- if ($config->get('mail_style', 'plaintext') === 'plaintext')
- {
- $mail->body = $this->replaceTags(Text::_($mail->body), $this->data);
- $this->mailer->setBody($mail->body);
- }
+ $mailStyle = $config->get('mail_style', 'plaintext');
+ $plainBody = $this->replaceTags(Text::_($mail->body), $this->data);
+ $htmlBody = $this->replaceTags(Text::_($mail->htmlbody), $this->data);
- if ($config->get('mail_style', 'plaintext') === 'html')
+ if ($mailStyle === 'plaintext' || $mailStyle === 'both')
{
- $this->mailer->IsHTML(true);
- $mail->htmlbody = $this->replaceTags(Text::_($mail->htmlbody), $this->data);
- $this->mailer->setBody($mail->htmlbody);
+ // If the Plain template is empty try to convert the HTML template to a Plain text
+ if (!$plainBody)
+ {
+ $plainBody = strip_tags(str_replace(['
', '
', '
'], "\n", $htmlBody));
+ }
+
+ $this->mailer->setBody($plainBody);
+
+ // Set alt body, use $mailer->Body directly because it was filtered by $mailer->setBody()
+ if ($mailStyle === 'both')
+ {
+ $this->mailer->AltBody = $this->mailer->Body;
+ }
}
- if ($config->get('mail_style', 'plaintext') === 'both')
+ if ($mailStyle === 'html' || $mailStyle === 'both')
{
$this->mailer->IsHTML(true);
- $mail->htmlbody = $this->replaceTags(Text::_($mail->htmlbody), $this->data);
- $this->mailer->setBody($mail->htmlbody);
- $mail->body = $this->replaceTags(Text::_($mail->body), $this->data);
- $this->mailer->AltBody = $mail->body;
+
+ // If HTML body is empty try to convert the Plain template to html
+ if (!$htmlBody)
+ {
+ $htmlBody = nl2br($plainBody);
+ }
+
+ $this->mailer->setBody($htmlBody);
}
if ($config->get('copy_mails') && $params->get('copyto'))