Properly utilize the plainOnly flag in mail.beforeAddContent (#3479)
Credit to @hlev
This commit is contained in:
parent
aeb7616d06
commit
edcc4af68a
|
|
@ -325,9 +325,10 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
/*
|
||||
* Override standard Mailer content with template
|
||||
*/
|
||||
Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data, $raw) {
|
||||
Event::listen('mailer.beforeAddContent', function ($mailer, $message, $view, $data, $raw, $plain) {
|
||||
$method = $raw === null ? 'addContentToMailer' : 'addRawContentToMailer';
|
||||
return !MailManager::instance()->$method($message, $raw ?: $view, $data);
|
||||
$plainOnly = $view === null; // When "plain-text only" email is sent, $view is null, this sets the flag appropriately
|
||||
return !MailManager::instance()->$method($message, $raw ?: $view ?: $plain, $data, $plainOnly);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ class MailManager
|
|||
|
||||
/**
|
||||
* Same as `addContentToMailer` except with raw content.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function addRawContentToMailer($message, $content, $data)
|
||||
|
|
@ -70,11 +71,16 @@ class MailManager
|
|||
}
|
||||
|
||||
/**
|
||||
* This function hijacks the `addContent` method of the `October\Rain\Mail\Mailer`
|
||||
* This function hijacks the `addContent` method of the `October\Rain\Mail\Mailer`
|
||||
* class, using the `mailer.beforeAddContent` event.
|
||||
*
|
||||
* @param \Illuminate\Mail\Message $message
|
||||
* @param string $code
|
||||
* @param array $data
|
||||
* @param bool $plainOnly Add only plain text content to the message
|
||||
* @return bool
|
||||
*/
|
||||
public function addContentToMailer($message, $code, $data)
|
||||
public function addContentToMailer($message, $code, $data, $plainOnly = false)
|
||||
{
|
||||
if (isset($this->templateCache[$code])) {
|
||||
$template = $this->templateCache[$code];
|
||||
|
|
@ -87,16 +93,21 @@ class MailManager
|
|||
return false;
|
||||
}
|
||||
|
||||
$this->addContentToMailerInternal($message, $template, $data);
|
||||
$this->addContentToMailerInternal($message, $template, $data, $plainOnly);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal method used to share logic between `addRawContentToMailer` and `addContentToMailer`
|
||||
*
|
||||
* @param \Illuminate\Mail\Message $message
|
||||
* @param string $template
|
||||
* @param array $data
|
||||
* @param bool $plainOnly Add only plain text content to the message
|
||||
* @return void
|
||||
*/
|
||||
protected function addContentToMailerInternal($message, $template, $data)
|
||||
protected function addContentToMailerInternal($message, $template, $data, $plainOnly = false)
|
||||
{
|
||||
/*
|
||||
* Start twig transaction
|
||||
|
|
@ -124,12 +135,14 @@ class MailManager
|
|||
'subject' => $swiftMessage->getSubject()
|
||||
];
|
||||
|
||||
/*
|
||||
* HTML contents
|
||||
*/
|
||||
$html = $this->renderTemplate($template, $data);
|
||||
if (!$plainOnly) {
|
||||
/*
|
||||
* HTML contents
|
||||
*/
|
||||
$html = $this->renderTemplate($template, $data);
|
||||
|
||||
$message->setBody($html, 'text/html');
|
||||
$message->setBody($html, 'text/html');
|
||||
}
|
||||
|
||||
/*
|
||||
* Text contents
|
||||
|
|
@ -200,9 +213,8 @@ class MailManager
|
|||
|
||||
/**
|
||||
* Render the Markdown template into text.
|
||||
*
|
||||
* @param string $view
|
||||
* @param array $data
|
||||
* @param $content
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
public function renderText($content, $data = [])
|
||||
|
|
|
|||
Loading…
Reference in New Issue