Intereting Posts

Ошибка при попытке отправить электронную почту через Gmail с помощью SwiftMailer

Я следую за Symfony 3 Documentation, чтобы отправить электронное письмо от моего контроллера, но я получаю сообщение об ошибке. Я не задумывался о том, чтобы правильно следовать каждому шагу от вышеуказанной страницы, но не использовать.

Так выглядит мой контроллер:

<?php namespace MyBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Response; class DefaultController extends Controller { /** * @Route("/") */ public function indexAction(\Swift_Mailer $mailer) { $message = (new \Swift_Message('Hello Email')) ->setFrom('send@example.com') ->setTo('my.address@gmail.com') ->setBody( $this->renderView( // app/Resources/views/Emails/registration.html.twig 'MyBundle::Emails/registration.html.twig', array('name' => 'John Doe') ), 'text/html' ); $mailer->send($message); return new Response('<html<body>Sent</body></html>'); } } 

Это ошибка, которую я получаю:

Контроллер «MyBundle \ Controller \ DefaultController :: indexAction ()» требует, чтобы вы указали значение аргумента «$ mailer». Либо аргумент имеет значение NULL, ни нулевое значение не было предоставлено, значение по умолчанию не было предоставлено или из-за отсутствия необязательного аргумента после этого.

По сравнению с страницей документации, я уверен, что все так, как должно быть, так может кто-нибудь помочь мне найти источник этой ошибки?

Просто удалите $mailer из вашего конструктора (вы не находитесь в службе, вы находитесь в контроллере) и используйте $this->get('mailer')->send($message); отправить . (опять же, вы находитесь в контроллере, у вас есть доступ к почтовой службе, нет необходимости пытаться вставлять его в конструктор)

Я думаю, вы не autowiring в настройках проектов. Таким образом, Swift_Mailer не вводится автоматически. Включите его или введите почтовую службу вручную.

Узнайте больше об автопогрузке в Symfony.