Почта Symfony в классе Command - получить неопределенный метод с именем "get" - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь отправить почту (swiftmail) с помощью команды Symfony.Вот мой код:

class CommandMail extends Command
{
    protected static $defaultName = 'app:send-daily-mail';

    protected function configure() {
        $this
            ->setDescription('Send automatic reminders mail everyday.')

            ->setHelp('This command allows you to send automatic reminder mail to Rhys, everyday...');
    }

    protected function execute(InputInterface $input, OutputInterface $output) {
        $message = (new \Swift_Message('test auto mail cron 12 24 TEST'))
                    ->setFrom('xxxxxx.xxxxxxx@gmail.com')
                    ->setTo('wwwww.wwwwwww@gmail.com')
                    ->setBody('test body');

        $this->get('mailer')->send($message);
    }
}

У меня следующая ошибка:

В строке 54 CommandMail.php: Попытка вызова неопределенного метода с именем «get» класса «AppBundle \»Command \ CommandMail ".
Вы хотели вызвать, например," getAliases "," getApplication "," getDefaultName "," getDefinition "," getDescription "," getHelp "," getHelper "," getHelperSet "," getName ","getNativeDefin ition", "getProcessedHelp", "getSynopsis" или "getUsages"?

Я пробую много вещей (то есть getContainer () и многие другие), но ничего не работает.

Спасибо за вашу помощь!

(Symfony 3, SMTP gmail)

1 Ответ

0 голосов
/ 27 февраля 2019

Если вы используете Symfony 4, введите зависимость с помощью конструктора:

private $swiftMailerService;

public function __construct(\Swift_Mailer $swiftMailerService)
{
    parent::__construct();
    $this->swiftMailerService = $swiftMailerService;
}

protected function execute(InputInterface $input, OutputInterface $output) {
    $message = (new \Swift_Message('test auto mail cron 12 24 TEST'))
                ->setFrom('xxxxxx.xxxxxxx@gmail.com')
                ->setTo('wwwww.wwwwwww@gmail.com')
                ->setBody('test body');

    $this->swiftMailerService->send($message);
}
...