protected function createMessage()
 {
     $message = new Message(new Swift_Message());
     // If a global from address has been specified we will set it on every message
     // instances so the developer does not have to repeat themselves every time
     // they create a new message. We will just go ahead and push the address.
     if (isset($this->from['address'])) {
         $message->from($this->from['address'], $this->from['name']);
     }
     return $message;
 }
 public function testGetAttachments()
 {
     $getAttachment = \Closure::bind(function ($message) {
         return $this->getAttachments($message);
     }, $this->transport, 'Sichikawa\\LaravelSendgridDriver\\Transport\\SendgridTransport');
     $message = new Message($this->getMessage());
     $file = __DIR__ . '/test.png';
     $message->attach($file);
     $res = $getAttachment($message->getSwiftMessage());
     $this->assertEquals(base64_encode(file_get_contents($file)), array_get($res, '0.content'));
     $this->assertEquals('test.png', array_get($res, '0.filename'));
 }
Beispiel #3
0
 /**
  * Create a new message instance.
  *
  * @param  \Swift_Message  $swift
  * @return void
  */
 public function __construct(Swift_Message $swift, ViewFactory $viewFactory, Filesystem $filesystem, Translator $translator)
 {
     parent::__construct($swift);
     $this->viewFactory = $viewFactory;
     $this->filesystem = $filesystem;
     $this->translator = $translator;
     $this->data = [];
 }
Beispiel #4
0
 /**
  * Add the content to a given message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @param  string  $view
  * @param  string  $plain
  * @param  array   $data
  * @return void
  */
 protected function addContent($message, $view, $plain, $data)
 {
     if (isset($view)) {
         $viewContent = $this->getView($view, $data);
         $result = MailParser::parse($viewContent);
         $message->setBody($result['html'], 'text/html');
         if ($result['text']) {
             $message->addPart($result['text'], 'text/plain');
         }
         if ($subject = array_get($result['settings'], 'subject')) {
             $message->subject($subject);
         }
     }
     if (isset($plain)) {
         $message->addPart($this->getView($plain, $data), 'text/plain');
     }
 }
Beispiel #5
0
 /**
  * Create a new message instance.
  *
  * @return \Illuminate\Mail\Message
  */
 protected function createMessage()
 {
     // Get the DKIM selector.
     $selector = Config::get('mail.dkim.selector');
     // If we have a DKIM selector, then add the signing.
     if (!empty($selector)) {
         // Use the signed message with support for signing.
         // So long as there is a selector we will do this, even if a private
         // key is not set. This is handy if the application wants to add its
         // own signatures later.
         $message = new Message(new Swift_SignedMessage());
         // Get the key and domain name.
         // Ideally these would be specific to the selector, with the selector being
         // chosen according to the domain of the sending address. At this stage we do
         // not know what the final sending addressis going to be.
         $private_key = Config::get('mail.dkim.private_key');
         $domain_name = Config::get('mail.dkim.domain_name');
         if (!empty($private_key) && !empty($domain_name)) {
             // Do the DKIM signing.
             $dkim_signer = new Swift_Signers_DKIMSigner($private_key, $domain_name, $selector);
             // Issue #1: ignore certain headers that cause end-to-end failure.
             $dkim_signer->ignoreHeader('Return-Path');
             $dkim_signer->ignoreHeader('Bcc');
             $dkim_signer->ignoreHeader('DKIM-Signature');
             $dkim_signer->ignoreHeader('Received');
             $dkim_signer->ignoreHeader('Comments');
             $dkim_signer->ignoreHeader('Keywords');
             $dkim_signer->ignoreHeader('Resent-Bcc');
             $message->attachSigner($dkim_signer);
         }
     } else {
         // Non-signed message.
         $message = new Message(new Swift_Message());
     }
     // If a global from address has been specified we will set it on every message
     // instances so the developer does not have to repeat themselves every time
     // they create a new message. We will just go ahead and push the address.
     if (isset($this->from['address'])) {
         $message->from($this->from['address'], $this->from['name']);
     }
     return $message;
 }
Beispiel #6
0
 /**
  * Parse e-mail or array with e-mail addresses.
  *
  * @param array|string $address
  * @param string $name
  * @param string $type
  * @return \Illuminate\Mail\Message
  */
 protected function addAddresses($address, $name, $type)
 {
     if ('replyto' === strtolower($type)) {
         return parent::addAddresses($address, $name, $type);
     }
     if (is_array($address)) {
         $address = $this->validateArrayEmails($address);
     } else {
         $address = $this->validateEmail($address);
     }
     return parent::addAddresses($address, $name, $type);
 }
Beispiel #7
0
 protected function sendClosure(Message $mailObject)
 {
     $mailObject->subject($this->subject);
     $mailObject->from($this->from[0]['address'], $this->from[0]['name']);
     foreach ($this->to as $toDetails) {
         $mailObject->to($toDetails['address'], $toDetails['name']);
     }
     foreach ($this->cc as $ccDetails) {
         $mailObject->cc($ccDetails['address'], $ccDetails['name']);
     }
     foreach ($this->bcc as $bccDetails) {
         $mailObject->bcc($bccDetails['address'], $bccDetails['name']);
     }
     foreach ($this->attachments as $attachmentDetails) {
         $mailObject->attach($attachmentDetails['file'], ['as' => $attachmentDetails['filename'], 'mime' => $attachmentDetails['mimetype']]);
     }
 }
 /**
  * Builds the email array and return it as an array of all emails to be sent!!
  */
 public function getIlluminateEmails()
 {
     $emails = [];
     foreach ($this->tos as $destination) {
         $mail = new Message(new Swift_Message());
         $mail->to($destination[0], $destination[1]);
         $mail->from($this->from['email'], $this->from['name']);
         $mail->subject($this->subject);
         $mail->setBody($this->body['content'], $this->body['type']);
         foreach ($this->files as $file) {
             $mail->attach($file);
         }
         $emails[] = $mail;
     }
     return $emails;
 }
Beispiel #9
0
 /**
  * Add the content to a given message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @param  string  $view
  * @param  string  $plain
  * @param  string  $raw
  * @param  array  $data
  * @return void
  */
 protected function addContent($message, $view, $plain, $raw, $data)
 {
     if (isset($view)) {
         $message->setBody($this->getView($view, $data), 'text/html');
     }
     if (isset($plain)) {
         $method = isset($view) ? 'addPart' : 'setBody';
         $message->{$method}($this->getView($plain, $data), 'text/plain');
     }
     if (isset($raw)) {
         $method = isset($view) || isset($plain) ? 'addPart' : 'setBody';
         $message->{$method}($raw, 'text/plain');
     }
 }
Beispiel #10
0
 /**
  * Generates a \Illuminate\Mail\Message template ready to send
  *
  * @param array $args = []
  * @return $this
  */
 public function generateMessage($args = [])
 {
     if (!empty($args)) {
         foreach ($args as $att => $v) {
             if (array_key_exists($att, get_object_vars($this))) {
                 $this->{$att} = $v;
             }
         }
     }
     $msg = new Message(new \Swift_Message());
     if ($this->hasFrom()) {
         $from = $this->getFrom();
         $msg->from($from[0], $from[1]);
     }
     if ($this->hasSender()) {
         $sender = $this->getSender();
         $msg->sender($sender[0], $sender[1]);
     }
     if ($this->hasTo()) {
         $to = $this->getTo();
         $msg->to($to[0], $to[1]);
     }
     if ($this->hasCc()) {
         $cc = $this->getCc();
         $msg->cc($cc[0], $cc[1]);
     }
     if ($this->hasBcc()) {
         $bcc = $this->getBcc();
         $msg->bcc($bcc[0], $bcc[1]);
     }
     if ($this->hasReplyTo()) {
         $reply_to = $this->getReplyTo();
         $msg->replyTo($reply_to[0], $reply_to[1]);
     }
     if ($this->hasSubject()) {
         $msg->subject($this->getSubject());
     }
     if ($this->hasAttach()) {
         foreach ($this->getAttach() as $attach) {
             $msg->attachData($attach[0], $attach[1], $attach[2]);
         }
     }
     if ($this->hasPriority()) {
         $msg->priority($this->getPriority());
     }
     $this->setMessage($msg);
     return $this;
 }
Beispiel #11
0
 /**
  * Add the raw content to a given message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @param  string  $html
  * @param  string  $text
  * @return void
  */
 protected function addContentRaw($message, $html, $text)
 {
     if (isset($html)) {
         $message->setBody($html, 'text/html');
     }
     if (isset($text)) {
         $message->addPart($text, 'text/plain');
     }
 }
 /**
  * CLOUSURE.
  *
  * Éste metodo es invocado desde la función Password::remind():
  *
  * Establece el asunto del mensaje que será enviado al usuario despúes de
  * solicitar la recuperación de su contraseña de acceso.
  *
  * @access protected
  * @param  Illuminate\Mail\Message  $message
  * @return void
  */
 protected function recuperaAccesoMessage(\Illuminate\Mail\Message $message)
 {
     $message->subject('Restaura tu contraseña de acceso.');
 }
 /**
  * Add the attachments to the message.
  *
  * @param  \Illuminate\Mail\Message  $mailMessage
  * @param  \Illuminate\Notifications\Messages\MailMessage  $message
  * @return void
  */
 protected function addAttachments($mailMessage, $message)
 {
     foreach ($message->attachments as $attachment) {
         $mailMessage->attach($attachment['file'], $attachment['options']);
     }
     foreach ($message->rawAttachments as $attachment) {
         $mailMessage->attachData($attachment['data'], $attachment['name'], $attachment['options']);
     }
 }
 public function testSetPersonalizations()
 {
     $setParameters = \Closure::bind(function ($message, $data) {
         return $this->setParameters($message, $data);
     }, $this->transport, SendgridV3Transport::class);
     $personalizations = [['substitutions' => ['substitutions_key' => 'substitutions_value'], 'custom_args' => ['custom_args_key' => 'custom_args_value'], 'send_at' => time()]];
     $message = new Message($this->getMessage());
     $message->embedData(['personalizations' => $personalizations], 'sendgrid/x-smtpapi');
     $data = [];
     $data = $setParameters($message->getSwiftMessage(), $data);
     $this->assertEquals(['personalizations' => $personalizations], $data);
 }
 public function testSetSmtpApi()
 {
     $setSmtpApi = \Closure::bind(function (&$data, $message) {
         return $this->setSmtpApi($data, $message);
     }, $this->transport, 'Sichikawa\\LaravelSendgridDriver\\Transport\\SendGridTransport');
     $data = [];
     $message = new Message($this->getMessage());
     $message->embedData(['category' => 'foo'], 'sendgrid/x-smtpapi');
     $setSmtpApi($data, $message->getSwiftMessage());
     $this->assertEquals(json_encode(['category' => 'foo']), $data['x-smtpapi']);
 }
Beispiel #16
0
 /**
  * Run the callbacks for the message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @return $this
  */
 protected function runCallbacks($message)
 {
     foreach ($this->callbacks as $callback) {
         $callback($message->getSwiftMessage());
     }
     return $this;
 }
Beispiel #17
0
 /**
  * Sets tzhe subject of the message
  *
  * @param \Illuminate\Mail\Message $message
  * @return void
  **/
 protected function setSubject(Message $message)
 {
     if (!isset($this->data['subject'])) {
         throw new OutOfBoundsException("You have to pass a subject key and value in your view data");
     }
     $message->subject($this->data['subject']);
 }
 /**
  * Add the content to a given message.
  *
  * @param  \Illuminate\Mail\Message $message
  * @param  string $view
  * @param  string $plain
  * @param  array $data
  * @return void
  */
 protected function addContent($message, $view, $plain, $raw, $data)
 {
     /*
      * Extensbility
      */
     if ($this->fireEvent('mailer.beforeAddContent', [$message, $view, $data], true) === false || Event::fire('mailer.beforeAddContent', [$this, $message, $view, $data], true) === false) {
         return;
     }
     $html = null;
     $text = null;
     if (isset($view)) {
         $viewContent = $this->getView($view, $data);
         $result = MailParser::parse($viewContent);
         $html = $result['html'];
         if ($result['text']) {
             $text = $result['text'];
         }
         /*
          * Subject
          */
         $customSubject = $message->getSwiftMessage()->getSubject();
         if (empty($customSubject) && ($subject = array_get($result['settings'], 'subject'))) {
             $message->subject($subject);
         }
     }
     if (isset($plain)) {
         $text = $this->getView($plain, $data);
     }
     if (isset($raw)) {
         $text = $raw;
     }
     $this->addContentRaw($message, $html, $text);
     /*
      * Extensbility
      */
     $this->fireEvent('mailer.addContent', [$message, $view, $data]);
     Event::fire('mailer.addContent', [$this, $message, $view, $data]);
 }
Beispiel #19
0
 /**
  * Add the content to a given message.
  *
  * @param  \Illuminate\Mail\Message $message
  * @param  string $view
  * @param  string $plain
  * @param  array $data
  * @return void
  */
 protected function addContent($message, $view, $plain, $raw, $data)
 {
     /*
      * Extensbility
      */
     if ($this->fireEvent('mailer.beforeAddContent', [$message, $view, $data], true) === false || Event::fire('mailer.beforeAddContent', [$this, $message, $view, $data], true) === false) {
         return;
     }
     if (isset($view)) {
         $viewContent = $this->getView($view, $data);
         $result = MailParser::parse($viewContent);
         $message->setBody($result['html'], 'text/html');
         if ($result['text']) {
             $message->addPart($result['text'], 'text/plain');
         }
         if ($subject = array_get($result['settings'], 'subject')) {
             $message->subject($subject);
         }
     }
     if (isset($plain)) {
         $message->addPart($this->getView($plain, $data), 'text/plain');
     }
     if (isset($raw)) {
         $message->addPart($raw, 'text/plain');
     }
     /*
      * Extensbility
      */
     $this->fireEvent('mailer.addContent', [$message, $view, $data]);
     Event::fire('mailer.addContent', [$this, $message, $view, $data]);
 }
 /**
  * Build the invoice notification message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @param  mixed  $billable
  * @param  \Laravel\Cashier\Invoice
  * @param  array  $invoiceData
  * @return void
  */
 protected function buildInvoiceMessage($message, $billable, $invoice, array $invoiceData)
 {
     $message->to($billable->email, $billable->name)->subject($invoiceData['product'] . ' Invoice')->attachData($invoice->pdf($invoiceData), 'invoice.pdf');
 }
Beispiel #21
0
 public function testGetSwiftMessageMethod()
 {
     $this->assertInstanceOf(Swift_Mime_Message::class, $this->message->getSwiftMessage());
 }
 /**
  * Add the content to a given message.
  *
  * @param  \Illuminate\Mail\Message  $message
  * @param  string  $view
  * @param  string  $plain
  * @param  array   $data
  * @return void
  */
 protected function addContent($message, $view, $plain, $data)
 {
     if (isset($view)) {
         $message->setBody($this->getView($view, $data), 'text/html');
     }
     if (isset($plain)) {
         $message->addPart($this->getView($plain, $data), 'text/plain');
     }
 }
Beispiel #23
0
 /**
  * @param \Illuminate\Mail\Message $message
  */
 public function overideTo($message)
 {
     $to = $this->isOveride() ? $this->override['to'] : '';
     if (!empty($to)) {
         $message->setTo($to);
     }
 }