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'))