Merge pull request #9231 from nextcloud/13-9205
[stable13] Provide an option to disable HTML emails
This commit is contained in:
commit
26c153667a
|
@ -390,6 +390,18 @@ $CONFIG = array(
|
||||||
*/
|
*/
|
||||||
'mail_smtppassword' => '',
|
'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
|
* Proxy Configurations
|
||||||
|
@ -983,13 +995,6 @@ $CONFIG = array(
|
||||||
*/
|
*/
|
||||||
'systemtags.managerFactory' => '\OC\SystemTag\ManagerFactory',
|
'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
|
* Maintenance
|
||||||
*
|
*
|
||||||
|
|
|
@ -92,7 +92,8 @@ class Mailer implements IMailer {
|
||||||
* @return IMessage
|
* @return IMessage
|
||||||
*/
|
*/
|
||||||
public function createMessage() {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -38,12 +38,12 @@ use Swift_Message;
|
||||||
class Message implements IMessage {
|
class Message implements IMessage {
|
||||||
/** @var Swift_Message */
|
/** @var Swift_Message */
|
||||||
private $swiftMessage;
|
private $swiftMessage;
|
||||||
|
/** @var bool */
|
||||||
|
private $plainTextOnly;
|
||||||
|
|
||||||
/**
|
public function __construct(Swift_Message $swiftMessage, $plainTextOnly) {
|
||||||
* @param Swift_Message $swiftMessage
|
|
||||||
*/
|
|
||||||
public function __construct(Swift_Message $swiftMessage) {
|
|
||||||
$this->swiftMessage = $swiftMessage;
|
$this->swiftMessage = $swiftMessage;
|
||||||
|
$this->plainTextOnly = $plainTextOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -245,7 +245,9 @@ class Message implements IMessage {
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setHtmlBody($body) {
|
public function setHtmlBody($body) {
|
||||||
|
if (!$this->plainTextOnly) {
|
||||||
$this->swiftMessage->addPart($body, 'text/html');
|
$this->swiftMessage->addPart($body, 'text/html');
|
||||||
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +265,9 @@ class Message implements IMessage {
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setBody($body, $contentType) {
|
public function setBody($body, $contentType) {
|
||||||
|
if (!$this->plainTextOnly || $contentType !== 'text/html') {
|
||||||
$this->swiftMessage->setBody($body, $contentType);
|
$this->swiftMessage->setBody($body, $contentType);
|
||||||
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,7 +278,9 @@ class Message implements IMessage {
|
||||||
public function useTemplate(IEMailTemplate $emailTemplate) {
|
public function useTemplate(IEMailTemplate $emailTemplate) {
|
||||||
$this->setSubject($emailTemplate->renderSubject());
|
$this->setSubject($emailTemplate->renderSubject());
|
||||||
$this->setPlainBody($emailTemplate->renderText());
|
$this->setPlainBody($emailTemplate->renderText());
|
||||||
|
if (!$this->plainTextOnly) {
|
||||||
$this->setHtmlBody($emailTemplate->renderHtml());
|
$this->setHtmlBody($emailTemplate->renderHtml());
|
||||||
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,11 @@ class MailerTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateMessage() {
|
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());
|
$this->assertInstanceOf('\OC\Mail\Message', $this->mailer->createMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
namespace Test\Mail;
|
namespace Test\Mail;
|
||||||
|
|
||||||
use OC\Mail\Message;
|
use OC\Mail\Message;
|
||||||
|
use OCP\Mail\IEMailTemplate;
|
||||||
use Swift_Message;
|
use Swift_Message;
|
||||||
use Test\TestCase;
|
use Test\TestCase;
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ class MessageTest extends TestCase {
|
||||||
$this->swiftMessage = $this->getMockBuilder('\Swift_Message')
|
$this->swiftMessage = $this->getMockBuilder('\Swift_Message')
|
||||||
->disableOriginalConstructor()->getMock();
|
->disableOriginalConstructor()->getMock();
|
||||||
|
|
||||||
$this->message = new Message($this->swiftMessage);
|
$this->message = new Message($this->swiftMessage, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -180,4 +181,50 @@ class MessageTest extends TestCase {
|
||||||
$this->message->setHtmlBody('<blink>Fancy Body</blink>');
|
$this->message->setHtmlBody('<blink>Fancy Body</blink>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testPlainTextRenderOption() {
|
||||||
|
/** @var \PHPUnit_Framework_MockObject_MockObject|Swift_Message $swiftMessage */
|
||||||
|
$swiftMessage = $this->getMockBuilder('\Swift_Message')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
/** @var \PHPUnit_Framework_MockObject_MockObject|IEMailTemplate $template */
|
||||||
|
$template = $this->getMockBuilder('\OCP\Mail\IEMailTemplate')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
|
||||||
|
$message = new Message($swiftMessage, true);
|
||||||
|
|
||||||
|
$template
|
||||||
|
->expects($this->never())
|
||||||
|
->method('renderHTML');
|
||||||
|
$template
|
||||||
|
->expects($this->once())
|
||||||
|
->method('renderText');
|
||||||
|
$template
|
||||||
|
->expects($this->once())
|
||||||
|
->method('renderSubject');
|
||||||
|
|
||||||
|
$message->useTemplate($template);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testBothRenderingOptions() {
|
||||||
|
/** @var \PHPUnit_Framework_MockObject_MockObject|Swift_Message $swiftMessage */
|
||||||
|
$swiftMessage = $this->getMockBuilder('\Swift_Message')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
/** @var \PHPUnit_Framework_MockObject_MockObject|IEMailTemplate $template */
|
||||||
|
$template = $this->getMockBuilder('\OCP\Mail\IEMailTemplate')
|
||||||
|
->disableOriginalConstructor()->getMock();
|
||||||
|
|
||||||
|
$message = new Message($swiftMessage, false);
|
||||||
|
|
||||||
|
$template
|
||||||
|
->expects($this->once())
|
||||||
|
->method('renderHTML');
|
||||||
|
$template
|
||||||
|
->expects($this->once())
|
||||||
|
->method('renderText');
|
||||||
|
$template
|
||||||
|
->expects($this->once())
|
||||||
|
->method('renderSubject');
|
||||||
|
|
||||||
|
$message->useTemplate($template);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue