/**
  * Sends out the system message
  *
  * Examples:
  * <code>
  *  // sends out AppBundle/Resources/emails/registration/confirmUser.xml.twig
  *  $systemMailer->send('App:registration/confirmUser', ['user' => $user]);
  *
  *  // force locale of mail
  *  $systemMailer->send('App:info-mail', ['user' => $user], 'de');
  *
  *  // attach file to mail
  *  $systemMailer->send('App:message-with-pdf', [], null, function (\Swift_Message $message) {
  *     $message->attach(\Swift_Attachment::fromPath('my-document.pdf'))
  *  });
  * </code>
  *
  * @param string   $name            The email to send out, format: YourBundle:emailXmlTemplateName
  * @param array    $parameters      The parameters passed to your email template xml
  * @param string   $locale          Overwrite default locale of session
  * @param callable $messageModifier Pass Closure to modify message before it is send (to attach files i.e.)
  */
 public function send($name, $parameters = [], $locale = null, \Closure $messageModifier = null)
 {
     $mailDefinition = $this->provider->fetchMailDefinition($name, $parameters);
     $parsedMessage = $this->parser->parseMailDefinition($mailDefinition, $locale ?: $this->locale);
     $this->handleDefaults($parsedMessage);
     $this->mailer->send($parsedMessage, $messageModifier);
 }
 /**
  * @param null  $locale
  * @param array $defaults
  *
  * @return SystemMailer
  */
 protected function createFixture($locale = null, $defaults = [])
 {
     $this->provider = $this->prophesize(ProviderInterface::class);
     $this->parser = $this->prophesize(ParserInterface::class);
     $this->mailer = $this->prophesize(MailerInterface::class);
     $defaults = $this->mergeDefaults($defaults);
     return new SystemMailer($this->provider->reveal(), $this->parser->reveal(), $this->mailer->reveal(), $locale, $defaults);
 }