aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-04-16 15:55:39 +0200
committerMorris Jobke <hey@morrisjobke.de>2018-04-18 22:53:37 +0200
commit7f454fea8e374c3bea173f4b98dbcee41a005384 (patch)
tree4c47fb22d8380e63cfbd8a1d9921316cb2cbe02b
parentf7d6eb9ab66d829217fa808a3158b4759ffc9381 (diff)
downloadnextcloud-server-7f454fea8e374c3bea173f4b98dbcee41a005384.tar.gz
nextcloud-server-7f454fea8e374c3bea173f4b98dbcee41a005384.zip
Provide an option to disable HTML emails
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
-rw-r--r--apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php6
-rw-r--r--config/config.sample.php19
-rw-r--r--lib/private/Mail/Mailer.php3
-rw-r--r--lib/private/Mail/Message.php16
-rw-r--r--tests/lib/Mail/MailerTest.php5
-rw-r--r--tests/lib/Mail/MessageTest.php3
6 files changed, 34 insertions, 18 deletions
diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
index 56eb00406da..3fe48975025 100644
--- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
+++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php
@@ -36,7 +36,7 @@ use Test\TestCase;
class IMipPluginTest extends TestCase {
public function testDelivery() {
- $mailMessage = new \OC\Mail\Message(new \Swift_Message());
+ $mailMessage = new \OC\Mail\Message(new \Swift_Message(), false);
/** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */
$mailer = $this->getMockBuilder('OC\Mail\Mailer')->disableOriginalConstructor()->getMock();
$mailer->method('createMessage')->willReturn($mailMessage);
@@ -68,7 +68,7 @@ class IMipPluginTest extends TestCase {
}
public function testFailedDelivery() {
- $mailMessage = new \OC\Mail\Message(new \Swift_Message());
+ $mailMessage = new \OC\Mail\Message(new \Swift_Message(), false);
/** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */
$mailer = $this->getMockBuilder('OC\Mail\Mailer')->disableOriginalConstructor()->getMock();
$mailer->method('createMessage')->willReturn($mailMessage);
@@ -103,7 +103,7 @@ class IMipPluginTest extends TestCase {
* @dataProvider dataNoMessageSendForPastEvents
*/
public function testNoMessageSendForPastEvents($veventParams, $expectsMail) {
- $mailMessage = new \OC\Mail\Message(new \Swift_Message());
+ $mailMessage = new \OC\Mail\Message(new \Swift_Message(), false);
/** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */
$mailer = $this->getMockBuilder('OC\Mail\Mailer')->disableOriginalConstructor()->getMock();
$mailer->method('createMessage')->willReturn($mailMessage);
diff --git a/config/config.sample.php b/config/config.sample.php
index 57811f2e66f..b7f8bd15d07 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -383,6 +383,18 @@ $CONFIG = array(
*/
'mail_smtppassword' => '',
+/**
+ * Replaces the default mail template layout. This can be utilized if the
+ * options to modify the mail texts with the theming app is not enough.
+ * The class must extend ``\OC\Mail\EMailTemplate``
+ */
+'mail_template_class' => '\OC\Mail\EMailTemplate',
+
+/**
+ * Email will be send by default with an HTML and a plain text body. This option
+ * allows to only send plain text emails.
+ */
+'mail_send_plaintext_only' => false,
/**
* Proxy Configurations
@@ -986,13 +998,6 @@ $CONFIG = array(
'systemtags.managerFactory' => '\OC\SystemTag\ManagerFactory',
/**
- * Replaces the default mail template layout. This can be utilized if the
- * options to modify the mail texts with the theming app is not enough.
- * The class must extend ``\OC\Mail\EMailTemplate``
- */
-'mail_template_class' => '\OC\Mail\EMailTemplate',
-
-/**
* Maintenance
*
* These options are for halting user activity when you are performing server
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index 0e42e745e48..5e7f1179c69 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -87,7 +87,8 @@ class Mailer implements IMailer {
* @return Message
*/
public function createMessage() {
- return new Message(new \Swift_Message());
+ $plainTextOnly = $this->config->getSystemValue('mail_send_plaintext_only', false);
+ return new Message(new \Swift_Message(), $plainTextOnly);
}
/**
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index 3184f26848b..6fb1253ebe2 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -33,12 +33,12 @@ use Swift_Message;
class Message {
/** @var Swift_Message */
private $swiftMessage;
+ /** @var bool */
+ private $plainTextOnly;
- /**
- * @param Swift_Message $swiftMessage
- */
- function __construct(Swift_Message $swiftMessage) {
+ public function __construct(Swift_Message $swiftMessage, $plainTextOnly) {
$this->swiftMessage = $swiftMessage;
+ $this->plainTextOnly = $plainTextOnly;
}
/**
@@ -229,7 +229,9 @@ class Message {
* @return $this
*/
public function setHtmlBody($body) {
- $this->swiftMessage->addPart($body, 'text/html');
+ if (!$this->plainTextOnly) {
+ $this->swiftMessage->addPart($body, 'text/html');
+ }
return $this;
}
@@ -247,7 +249,9 @@ class Message {
* @return $this
*/
public function setBody($body, $contentType) {
- $this->swiftMessage->setBody($body, $contentType);
+ if (!$this->plainTextOnly || $contentType !== 'text/html') {
+ $this->swiftMessage->setBody($body, $contentType);
+ }
return $this;
}
}
diff --git a/tests/lib/Mail/MailerTest.php b/tests/lib/Mail/MailerTest.php
index f647b966f1f..abe3054afd6 100644
--- a/tests/lib/Mail/MailerTest.php
+++ b/tests/lib/Mail/MailerTest.php
@@ -95,6 +95,11 @@ class MailerTest extends TestCase {
}
public function testCreateMessage() {
+ $this->config
+ ->expects($this->any())
+ ->method('getSystemValue')
+ ->with('mail_send_plaintext_only', false)
+ ->will($this->returnValue(false));
$this->assertInstanceOf('\OC\Mail\Message', $this->mailer->createMessage());
}
diff --git a/tests/lib/Mail/MessageTest.php b/tests/lib/Mail/MessageTest.php
index 691168ce24c..646341b0df5 100644
--- a/tests/lib/Mail/MessageTest.php
+++ b/tests/lib/Mail/MessageTest.php
@@ -9,6 +9,7 @@
namespace Test\Mail;
use OC\Mail\Message;
+use OCP\Mail\IEMailTemplate;
use Swift_Message;
use Test\TestCase;
@@ -36,7 +37,7 @@ class MessageTest extends TestCase {
$this->swiftMessage = $this->getMockBuilder('\Swift_Message')
->disableOriginalConstructor()->getMock();
- $this->message = new Message($this->swiftMessage);
+ $this->message = new Message($this->swiftMessage, false);
}
/**