%PDF- %PDF-
Direktori : /home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Notifications/Messages/ |
Current File : //home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php |
<?php namespace Illuminate\Notifications\Messages; use Illuminate\Container\Container; use Illuminate\Contracts\Mail\Attachable; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Mail\Attachment; use Illuminate\Mail\Markdown; use Illuminate\Support\Traits\Conditionable; class MailMessage extends SimpleMessage implements Renderable { use Conditionable; /** * The view to be rendered. * * @var array|string */ public $view; /** * The view data for the message. * * @var array */ public $viewData = []; /** * The Markdown template to render (if applicable). * * @var string|null */ public $markdown = 'notifications::email'; /** * The current theme being used when generating emails. * * @var string|null */ public $theme; /** * The "from" information for the message. * * @var array */ public $from = []; /** * The "reply to" information for the message. * * @var array */ public $replyTo = []; /** * The "cc" information for the message. * * @var array */ public $cc = []; /** * The "bcc" information for the message. * * @var array */ public $bcc = []; /** * The attachments for the message. * * @var array */ public $attachments = []; /** * The raw attachments for the message. * * @var array */ public $rawAttachments = []; /** * The tags for the message. * * @var array */ public $tags = []; /** * The metadata for the message. * * @var array */ public $metadata = []; /** * Priority level of the message. * * @var int */ public $priority; /** * The callbacks for the message. * * @var array */ public $callbacks = []; /** * Set the view for the mail message. * * @param array|string $view * @param array $data * @return $this */ public function view($view, array $data = []) { $this->view = $view; $this->viewData = $data; $this->markdown = null; return $this; } /** * Set the Markdown template for the notification. * * @param string $view * @param array $data * @return $this */ public function markdown($view, array $data = []) { $this->markdown = $view; $this->viewData = $data; $this->view = null; return $this; } /** * Set the default markdown template. * * @param string $template * @return $this */ public function template($template) { $this->markdown = $template; return $this; } /** * Set the theme to use with the Markdown template. * * @param string $theme * @return $this */ public function theme($theme) { $this->theme = $theme; return $this; } /** * Set the from address for the mail message. * * @param string $address * @param string|null $name * @return $this */ public function from($address, $name = null) { $this->from = [$address, $name]; return $this; } /** * Set the "reply to" address of the message. * * @param array|string $address * @param string|null $name * @return $this */ public function replyTo($address, $name = null) { if ($this->arrayOfAddresses($address)) { $this->replyTo += $this->parseAddresses($address); } else { $this->replyTo[] = [$address, $name]; } return $this; } /** * Set the cc address for the mail message. * * @param array|string $address * @param string|null $name * @return $this */ public function cc($address, $name = null) { if ($this->arrayOfAddresses($address)) { $this->cc += $this->parseAddresses($address); } else { $this->cc[] = [$address, $name]; } return $this; } /** * Set the bcc address for the mail message. * * @param array|string $address * @param string|null $name * @return $this */ public function bcc($address, $name = null) { if ($this->arrayOfAddresses($address)) { $this->bcc += $this->parseAddresses($address); } else { $this->bcc[] = [$address, $name]; } return $this; } /** * Attach a file to the message. * * @param string|\Illuminate\Contracts\Mail\Attachable|\Illuminate\Mail\Attachment $file * @param array $options * @return $this */ public function attach($file, array $options = []) { if ($file instanceof Attachable) { $file = $file->toMailAttachment(); } if ($file instanceof Attachment) { return $file->attachTo($this); } $this->attachments[] = compact('file', 'options'); return $this; } /** * Attach in-memory data as an attachment. * * @param string $data * @param string $name * @param array $options * @return $this */ public function attachData($data, $name, array $options = []) { $this->rawAttachments[] = compact('data', 'name', 'options'); return $this; } /** * Add a tag header to the message when supported by the underlying transport. * * @param string $value * @return $this */ public function tag($value) { array_push($this->tags, $value); return $this; } /** * Add a metadata header to the message when supported by the underlying transport. * * @param string $key * @param string $value * @return $this */ public function metadata($key, $value) { $this->metadata[$key] = $value; return $this; } /** * Set the priority of this message. * * The value is an integer where 1 is the highest priority and 5 is the lowest. * * @param int $level * @return $this */ public function priority($level) { $this->priority = $level; return $this; } /** * Get the data array for the mail message. * * @return array */ public function data() { return array_merge($this->toArray(), $this->viewData); } /** * Parse the multi-address array into the necessary format. * * @param array $value * @return array */ protected function parseAddresses($value) { return collect($value)->map(function ($address, $name) { return [$address, is_numeric($name) ? null : $name]; })->values()->all(); } /** * Determine if the given "address" is actually an array of addresses. * * @param mixed $address * @return bool */ protected function arrayOfAddresses($address) { return is_iterable($address) || $address instanceof Arrayable; } /** * Render the mail notification message into an HTML string. * * @return \Illuminate\Support\HtmlString */ public function render() { if (isset($this->view)) { return Container::getInstance()->make('mailer')->render( $this->view, $this->data() ); } $markdown = Container::getInstance()->make(Markdown::class); return $markdown->theme($this->theme ?: $markdown->getTheme()) ->render($this->markdown, $this->data()); } /** * Register a callback to be called with the Symfony message instance. * * @param callable $callback * @return $this */ public function withSymfonyMessage($callback) { $this->callbacks[] = $callback; return $this; } }