diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index ec9568b734e2e..0b959ce4265e8 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -260,42 +260,35 @@ protected function sendMailNotification($filename, $link, $owner, $initiator, $s
}
$message = $this->mailer->createMessage();
- $htmlBody = $this->createMailBody('mail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
- $textBody = $this->createMailBody('altmail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
- $message->setTo([$shareWith]);
- $message->setSubject($subject);
- $message->setBody($textBody, 'text/plain');
- $message->setHtmlBody($htmlBody);
- $this->mailer->send($message);
- }
+ $emailTemplate = $this->mailer->createEMailTemplate();
- /**
- * create mail body
- *
- * @param $filename
- * @param $link
- * @param $owner
- * @param $initiator
- * @return string plain text mail
- * @throws HintException
- */
- protected function createMailBody($template, $filename, $link, $owner, $initiator) {
-
- $mailBodyTemplate = new Template('sharebymail', $template, '');
- $mailBodyTemplate->assign ('filename', \OCP\Util::sanitizeHTML($filename));
- $mailBodyTemplate->assign ('link', $link);
- $mailBodyTemplate->assign ('owner', \OCP\Util::sanitizeHTML($owner));
- $mailBodyTemplate->assign ('initiator', \OCP\Util::sanitizeHTML($initiator));
- $mailBodyTemplate->assign ('onBehalfOf', $initiator !== $owner);
- $mailBody = $mailBodyTemplate->fetchPage();
-
- if (is_string($mailBody)) {
- return $mailBody;
+ $emailTemplate->addHeader();
+ $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$ownerDisplayName, $filename]), false);
+
+ if ($owner === $initiator) {
+ $text = $this->l->t('%s shared »%s« with you.', [$ownerDisplayName, $filename]);
+ } else {
+ $text= $this->l->t('%s shared »%s« with you on behalf of %s.', [$ownerDisplayName, $filename, $initiator]);
}
- throw new HintException('Failed to create the E-mail',
- $this->l->t('Failed to create the E-mail'));
+ $emailTemplate->addBodyText(
+ $text . ' ' . $this->l->t('Click the button below to open it.'),
+ $text
+ );
+
+ $emailTemplate->addBodyButton(
+ $this->l->t('Open »%s«', [$filename]),
+ $link
+ );
+ $emailTemplate->addFooter();
+
+ $message->setTo([$shareWith]);
+ $message->setSubject($subject);
+ $message->setBody($emailTemplate->renderText(), 'text/plain');
+ $message->setHtmlBody($emailTemplate->renderHTML());
+ $this->mailer->send($message);
+
}
/**
@@ -316,39 +309,26 @@ protected function sendPassword($filename, $initiator, $shareWith, $password) {
$subject = (string)$this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName]);
$message = $this->mailer->createMessage();
- $htmlBody = $this->createMailBodyToSendPassword('mailpassword', $filename, $initiatorDisplayName, $password);
- $textBody = $this->createMailBodyToSendPassword('altmailpassword', $filename,$initiatorDisplayName, $password);
- $message->setTo([$shareWith]);
- $message->setSubject($subject);
- $message->setBody($textBody, 'text/plain');
- $message->setHtmlBody($htmlBody);
- $this->mailer->send($message);
- }
+ $emailTemplate = $this->mailer->createEMailTemplate();
- /**
- * create mail body to send password to recipient
- *
- * @param string $filename
- * @param string $initiator
- * @param string $password
- * @return string plain text mail
- * @throws HintException
- */
- protected function createMailBodyToSendPassword($template, $filename, $initiator, $password) {
+ $emailTemplate->addHeader();
+ $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]));
- $mailBodyTemplate = new Template('sharebymail', $template, '');
- $mailBodyTemplate->assign ('filename', \OCP\Util::sanitizeHTML($filename));
- $mailBodyTemplate->assign ('password', \OCP\Util::sanitizeHTML($password));
- $mailBodyTemplate->assign ('initiator', \OCP\Util::sanitizeHTML($initiator));
- $mailBody = $mailBodyTemplate->fetchPage();
+ $emailTemplate->addBodyText($this->l->t(
+ '%s shared »%s« with you. You should have already received a separate mail with a link to access it.',
+ [$initiatorDisplayName, $filename]
+ ));
+ $emailTemplate->addBodyText($this->l->t('It is protected with the following password: %s', [$password]));
- if (is_string($mailBody)) {
- return $mailBody;
- }
+ $emailTemplate->addFooter();
+
+ $message->setTo([$shareWith]);
+ $message->setSubject($subject);
+ $message->setBody($emailTemplate->renderText(), 'text/plain');
+ $message->setHtmlBody($emailTemplate->renderHTML());
+ $this->mailer->send($message);
- throw new HintException('Failed to create the E-mail',
- $this->l->t('Failed to create the E-mail'));
}
diff --git a/apps/sharebymail/templates/altmail.php b/apps/sharebymail/templates/altmail.php
deleted file mode 100644
index 7b9de6295ff9a..0000000000000
--- a/apps/sharebymail/templates/altmail.php
+++ /dev/null
@@ -1,36 +0,0 @@
-
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- */
-
-/** @var OC_Theme $theme */
-/** @var array $_ */
-if ($_['onBehalfOf']) {
- print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n", [$_['owner'], $_['filename'], $_['initiator'], $_['link']]));
-} else {
- print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n", [$_['owner'], $_['filename'], $_['link']]));
-}
-// TRANSLATORS term at the end of a mail
-p($l->t("Cheers!"));
-print_unescaped("\n");
-?>
-
---
-getName() . ' - ' . $theme->getSlogan()); ?>
-getBaseUrl());
diff --git a/apps/sharebymail/templates/altmailpassword.php b/apps/sharebymail/templates/altmailpassword.php
deleted file mode 100644
index f6e4c5b415859..0000000000000
--- a/apps/sharebymail/templates/altmailpassword.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- */
-
-/** @var OC_Theme $theme */
-/** @var array $_ */
-print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n\nIt is protected with the following password: %s\n\n", [$_['initiator'], $_['filename'], $_['password']]));
-// TRANSLATORS term at the end of a mail
-p($l->t("Cheers!"));
-print_unescaped("\n");
-?>
-
- --
-getName() . ' - ' . $theme->getSlogan()); ?>
-getBaseUrl());
diff --git a/apps/sharebymail/templates/mail.php b/apps/sharebymail/templates/mail.php
deleted file mode 100644
index daf12fe034a71..0000000000000
--- a/apps/sharebymail/templates/mail.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- */
-
-/** @var OC_Theme $theme */
-/** @var array $_ */
-?>
-
-
-
-
-
-
-
- |
-
- | |
-
- | |
-
- t('Hey there,
%s shared %s with you on behalf of %s.
', [$_['owner'], $_['link'], $_['filename'], $_['initiator']]));
- } else {
- print_unescaped($l->t('Hey there,
%s shared %s with you.
', [$_['owner'], $_['link'], $_['filename']]));
- }
- // TRANSLATORS term at the end of a mail
- p($l->t('Cheers!'));
- ?>
- |
-
- | |
-
- | |
- --
- getName()); ?> -
- getSlogan()); ?>
- getBaseUrl());?>
- |
-
-
- | |
-
-
- |
-
diff --git a/apps/sharebymail/templates/mailpassword.php b/apps/sharebymail/templates/mailpassword.php
deleted file mode 100644
index 714a61cecd923..0000000000000
--- a/apps/sharebymail/templates/mailpassword.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- */
-
-/** @var OCA\Theming\ThemingDefaults $theme */
-/** @var array $_ */
-?>
-
-
-
-
-
-
-
- |
-
- | |
-
- | |
-
- t('Hey there,
%s shared %s with you. You should have already received a separate mail with a link to access it.
It is protected with the following password: %s
', [$_['initiator'], $_['filename'], $_['password']]));
- // TRANSLATORS term at the end of a mail
- p($l->t('Cheers!'));
- ?>
- |
-
- | |
-
- | |
- --
- getName()); ?> -
- getSlogan()); ?>
- getBaseUrl());?>
- |
-
-
- | |
-
-
- |
-
diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php
index 338f6594f5e57..805126d2ad836 100644
--- a/lib/private/Mail/EMailTemplate.php
+++ b/lib/private/Mail/EMailTemplate.php
@@ -98,7 +98,7 @@ class EMailTemplate implements IEMailTemplate {
-
+
@@ -225,6 +225,46 @@ class EMailTemplate implements IEMailTemplate {
+EOF;
+
+ protected $button = <<
+
+
+ | |
+
+
+
+
EOF;
protected $bodyEnd = <<headerAdded = true;
$logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo());
- $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl]);
+ $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl, $this->themingDefaults->getName()]);
}
/**
* Adds a heading to the email
*
* @param string $title
- * @param string $plainTitle Title that is used in the plain text email - if empty the $title is used
+ * @param string $plainTitle|bool Title that is used in the plain text email
+ * if empty the $title is used, if false none will be used
*/
public function addHeading($title, $plainTitle = '') {
if ($this->footerAdded) {
@@ -305,15 +346,18 @@ public function addHeading($title, $plainTitle = '') {
$plainTitle = $title;
}
- $this->htmlBody .= vsprintf($this->heading, [$title]);
- $this->plainBody .= $plainTitle . PHP_EOL . PHP_EOL;
+ $this->htmlBody .= vsprintf($this->heading, [htmlspecialchars($title)]);
+ if ($plainTitle !== false) {
+ $this->plainBody .= $plainTitle . PHP_EOL . PHP_EOL;
+ }
}
/**
* Adds a paragraph to the body of the email
*
* @param string $text
- * @param string $plainText Text that is used in the plain text email - if empty the $text is used
+ * @param string|bool $plainText Text that is used in the plain text email
+ * if empty the $text is used, if false none will be used
*/
public function addBodyText($text, $plainText = '') {
if ($this->footerAdded) {
@@ -328,8 +372,10 @@ public function addBodyText($text, $plainText = '') {
$this->bodyOpened = true;
}
- $this->htmlBody .= vsprintf($this->bodyText, [$text]);
- $this->plainBody .= $plainText . PHP_EOL . PHP_EOL;
+ $this->htmlBody .= vsprintf($this->bodyText, [htmlspecialchars($text)]);
+ if ($plainText !== false) {
+ $this->plainBody .= $plainText . PHP_EOL . PHP_EOL;
+ }
}
/**
@@ -342,7 +388,12 @@ public function addBodyText($text, $plainText = '') {
* @param string $plainTextLeft Text of left button that is used in the plain text version - if unset the $textLeft is used
* @param string $plainTextRight Text of right button that is used in the plain text version - if unset the $textRight is used
*/
- public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight, $plainTextLeft = '', $plainTextRight = '') {
+ public function addBodyButtonGroup($textLeft,
+ $urlLeft,
+ $textRight,
+ $urlRight,
+ $plainTextLeft = '',
+ $plainTextRight = '') {
if ($this->footerAdded) {
return;
}
@@ -360,16 +411,41 @@ public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight, $
}
$color = $this->themingDefaults->getColorPrimary();
- $this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, $textLeft, $urlRight, $textRight]);
+
+ $this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, htmlspecialchars($textLeft), $urlRight, htmlspecialchars($textRight)]);
$this->plainBody .= $plainTextLeft . ': ' . $urlLeft . PHP_EOL;
$this->plainBody .= $plainTextRight . ': ' . $urlRight . PHP_EOL . PHP_EOL;
}
+ /**
+ * Adds a button to the body of the email
+ *
+ * @param string $text Text of button
+ * @param string $url URL of button
+ *
+ * @since 12.0.0
+ */
+ public function addBodyButton($text, $url) {
+ if ($this->footerAdded) {
+ return;
+ }
+
+ if (!$this->bodyOpened) {
+ $this->htmlBody .= $this->bodyBegin;
+ $this->bodyOpened = true;
+ }
+
+ $color = $this->themingDefaults->getColorPrimary();
+ $this->htmlBody .= vsprintf($this->button, [$color, $color, $url, $color, htmlspecialchars($text)]);
+ $this->plainBody .= $text . ': ' . $url . PHP_EOL;
+
+ }
+
/**
* Adds a logo and a text to the footer.
in the text will be replaced by new lines in the plain text email
*
- * @param string $text
+ * @param string $text If the text is empty the default "Name - Slogan
This is an automatically generated email" will be used
*/
public function addFooter($text = '') {
if($text === '') {
@@ -388,7 +464,7 @@ public function addFooter($text = '') {
$this->htmlBody .= vsprintf($this->footer, [$text]);
$this->htmlBody .= $this->tail;
- $this->plainBody .= '--' . PHP_EOL;
+ $this->plainBody .= PHP_EOL . '-- ' . PHP_EOL;
$this->plainBody .= str_replace('
', PHP_EOL, $text);
}
diff --git a/lib/public/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php
index a1922e86151b8..4e308509c42f3 100644
--- a/lib/public/Mail/IEMailTemplate.php
+++ b/lib/public/Mail/IEMailTemplate.php
@@ -62,7 +62,8 @@ public function addHeader();
* Adds a heading to the email
*
* @param string $title
- * @param string $plainTitle Title that is used in the plain text email - if empty the $title is used
+ * @param string $plainTitle|bool Title that is used in the plain text email
+ * if empty the $title is used, if false none will be used
*
* @since 12.0.0
*/
@@ -72,7 +73,8 @@ public function addHeading($title, $plainTitle = '');
* Adds a paragraph to the body of the email
*
* @param string $text
- * @param string $plainText Text that is used in the plain text email - if empty the $text is used
+ * @param string|bool $plainText Text that is used in the plain text email
+ * if empty the $text is used, if false none will be used
*
* @since 12.0.0
*/
@@ -92,10 +94,20 @@ public function addBodyText($text, $plainText = '');
*/
public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight, $plainTextLeft = '', $plainTextRight = '');
+ /**
+ * Adds a button to the body of the email
+ *
+ * @param string $text Text of button
+ * @param string $url URL of button
+ *
+ * @since 12.0.0
+ */
+ public function addBodyButton($text, $url);
+
/**
* Adds a logo and a text to the footer.
in the text will be replaced by new lines in the plain text email
*
- * @param string $text
+ * @param string $text If the text is empty the default "Name - Slogan
This is an automatically generated email" will be used
*
* @since 12.0.0
*/
diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php
index ef9dae8766c7c..707abe9588da8 100644
--- a/tests/Settings/Mailer/NewUserMailHelperTest.php
+++ b/tests/Settings/Mailer/NewUserMailHelperTest.php
@@ -144,7 +144,7 @@ public function testGenerateTemplateWithPasswordResetToken() {
->method('getUID')
->willReturn('john');
$this->defaults
- ->expects($this->at(0))
+ ->expects($this->any())
->method('getName')
->willReturn('TestCloud');
@@ -174,7 +174,7 @@ public function testGenerateTemplateWithPasswordResetToken() {
-
+
@@ -227,7 +227,7 @@ public function testGenerateTemplateWithPasswordResetToken() {
|
- You have now an account, you can add, protect, and share your data.
+ You have now an TestCloud account, you can add, protect, and share your data.
|
|
@@ -324,7 +324,7 @@ public function testGenerateTemplateWithPasswordResetToken() {
- -
This is an automatically generated email, please do not reply.
+ TestCloud -
This is an automatically generated email, please do not reply.
@@ -340,15 +340,16 @@ public function testGenerateTemplateWithPasswordResetToken() {
$expectedTextBody = <<
-
+
@@ -579,7 +580,8 @@ public function testGenerateTemplateWithoutPasswordResetToken() {
Go to TestCloud: https://example.com/
Install Client: https://nextcloud.com/install/#install-clients
---
+
+--
TestCloud -
This is an automatically generated email, please do not reply.
EOF;
diff --git a/tests/data/emails/new-account-email-custom-text-alternative.txt b/tests/data/emails/new-account-email-custom-text-alternative.txt
index bcbc6632175e5..9f02563edfeca 100644
--- a/tests/data/emails/new-account-email-custom-text-alternative.txt
+++ b/tests/data/emails/new-account-email-custom-text-alternative.txt
@@ -7,5 +7,6 @@ Your username is: abc
Set your password - text: https://example.org/resetPassword/123
Install Client - text: https://nextcloud.com/install/#install-clients
---
+
+--
TestCloud - A safe home for your data
diff --git a/tests/data/emails/new-account-email-custom.html b/tests/data/emails/new-account-email-custom.html
index c754412e6810b..a60902ae306f5 100644
--- a/tests/data/emails/new-account-email-custom.html
+++ b/tests/data/emails/new-account-email-custom.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tests/data/emails/new-account-email-custom.txt b/tests/data/emails/new-account-email-custom.txt
index 962128980e018..e849c73d941a3 100644
--- a/tests/data/emails/new-account-email-custom.txt
+++ b/tests/data/emails/new-account-email-custom.txt
@@ -7,5 +7,6 @@ Your username is: abc
Set your password: https://example.org/resetPassword/123
Install Client: https://nextcloud.com/install/#install-clients
---
+
+--
TestCloud - A safe home for your data
diff --git a/tests/data/emails/new-account-email-single-button.html b/tests/data/emails/new-account-email-single-button.html
new file mode 100644
index 0000000000000..50763efa5b5fe
--- /dev/null
+++ b/tests/data/emails/new-account-email-single-button.html
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome aboard
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ You have now an Nextcloud account, you can add, protect, and share your data.
+ |
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+ |
+ Your username is: abc
+ |
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/data/emails/new-account-email-single-button.txt b/tests/data/emails/new-account-email-single-button.txt
new file mode 100644
index 0000000000000..5595496140033
--- /dev/null
+++ b/tests/data/emails/new-account-email-single-button.txt
@@ -0,0 +1,10 @@
+Welcome aboard
+
+You have now an Nextcloud account, you can add, protect, and share your data.
+
+Your username is: abc
+
+Set your password: https://example.org/resetPassword/123
+
+--
+TestCloud - A safe home for your data
diff --git a/tests/data/emails/new-account-email.html b/tests/data/emails/new-account-email.html
index 4fb6f5af15e0b..2e3866163d7af 100644
--- a/tests/data/emails/new-account-email.html
+++ b/tests/data/emails/new-account-email.html
@@ -23,7 +23,7 @@
-
+
diff --git a/tests/data/emails/new-account-email.txt b/tests/data/emails/new-account-email.txt
index 6732d806d765e..e01268b562016 100644
--- a/tests/data/emails/new-account-email.txt
+++ b/tests/data/emails/new-account-email.txt
@@ -7,6 +7,7 @@ Your username is: abc
Set your password: https://example.org/resetPassword/123
Install Client: https://nextcloud.com/install/#install-clients
---
+
+--
TestCloud - A safe home for your data
This is an automatically generated email, please do not reply.
\ No newline at end of file
diff --git a/tests/lib/Mail/EMailTemplateTest.php b/tests/lib/Mail/EMailTemplateTest.php
index 9f80dad642a39..f9e1ecf29cad1 100644
--- a/tests/lib/Mail/EMailTemplateTest.php
+++ b/tests/lib/Mail/EMailTemplateTest.php
@@ -62,6 +62,10 @@ public function testEMailTemplateCustomFooter() {
->expects($this->any())
->method('getLogo')
->willReturn('/img/logo-mail-header.png');
+ $this->defaults
+ ->expects($this->any())
+ ->method('getName')
+ ->willReturn('TestCloud');
$this->urlGenerator
->expects($this->once())
->method('getAbsoluteURL')
@@ -125,6 +129,44 @@ public function testEMailTemplateDefaultFooter() {
$this->assertSame($expectedTXT, $this->emailTemplate->renderText());
}
+ public function testEMailTemplateSingleButton() {
+ $this->defaults
+ ->expects($this->any())
+ ->method('getColorPrimary')
+ ->willReturn('#0082c9');
+ $this->defaults
+ ->expects($this->any())
+ ->method('getName')
+ ->willReturn('TestCloud');
+ $this->defaults
+ ->expects($this->any())
+ ->method('getSlogan')
+ ->willReturn('A safe home for your data');
+ $this->defaults
+ ->expects($this->any())
+ ->method('getLogo')
+ ->willReturn('/img/logo-mail-header.png');
+ $this->urlGenerator
+ ->expects($this->once())
+ ->method('getAbsoluteURL')
+ ->with('/img/logo-mail-header.png')
+ ->willReturn('https://example.org/img/logo-mail-header.png');
+
+ $this->emailTemplate->addHeader();
+ $this->emailTemplate->addHeading('Welcome aboard');
+ $this->emailTemplate->addBodyText('You have now an Nextcloud account, you can add, protect, and share your data.');
+ $this->emailTemplate->addBodyText('Your username is: abc');
+ $this->emailTemplate->addBodyButton(
+ 'Set your password', 'https://example.org/resetPassword/123'
+ );
+ $this->emailTemplate->addFooter();
+
+ $expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.html');
+ $this->assertSame($expectedHTML, $this->emailTemplate->renderHTML());
+ $expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.txt');
+ $this->assertSame($expectedTXT, $this->emailTemplate->renderText());
+ }
+
public function testEMailTemplateAlternativePlainTexts() {