/** * 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); }
public function testSendDefaultsArePopulated() { $fixture = $this->createFixture('de', ['subject' => '_1', 'replyTo' => '_2', 'from' => ['email' => '_3', 'name' => '_4'], 'to' => ['email' => '_5', 'name' => '_6'], 'cc' => ['email' => '_7', 'name' => '_8'], 'bcc' => ['email' => '_9', 'name' => '_10']]); $parsedMessage = $this->prophesize(ParsedMessage::class); $parsedMessage->getSubject()->willReturn(null); $parsedMessage->setSubject('_1')->shouldBeCalled(); $parsedMessage->getReplyTo()->willReturn(null); $parsedMessage->setReplyTo('_2')->shouldBeCalled(); $parsedMessage->getFrom()->willReturn([]); $parsedMessage->setFrom('_3', '_4')->shouldBeCalled(); $parsedMessage->getTo()->willReturn([]); $parsedMessage->addTo('_5', '_6')->shouldBeCalled(); $parsedMessage->getCc()->willReturn([]); $parsedMessage->addCc('_7', '_8')->shouldBeCalled(); $parsedMessage->getBcc()->willReturn([]); $parsedMessage->addBcc('_9', '_10')->shouldBeCalled(); $this->provider->fetchMailDefinition('App:test', ['param1' => 'yay!'])->willReturn('<email></email>')->shouldBeCalled(); $this->parser->parseMailDefinition('<email></email>', 'de')->willReturn($parsedMessage)->shouldBeCalled(); $this->mailer->send($parsedMessage, null)->shouldBeCalled(); $fixture->send('App:test', ['param1' => 'yay!']); }