Ошибка при попытке отправить электронное письмо от этой функции - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно отправить электронное письмо, используя swiftmailer, из пользовательской функции пакетной обработки, но когда я добавляю «\ Swift_Mailer $ mailer» в параметр, я получаю эту ошибку: «Слишком мало аргументов для функции App \ Controller \ ContactAdminController :: batchActionMail (), 2 передано в /var/www/html/cvtheque/src/Controller/ContactAdminController.php по строке 749 и ровно 3 ожидается "

. Я ранее настроил отправку электронной почты, я отправляю электронные письма из другой функции иэто работает очень хорошо.Кажется, что проблема заключается в том, что эта функция находится в пользовательском CRUDCONTROLLER для класса сонаты администратора

/**
 * @param ProxyQueryInterface $selectedModelQuery
 * @param Request $request
 * @return RedirectResponse
 */
public function batchActionMail(ProxyQueryInterface $selectedModelQuery, Request $request = null,  \Swift_Mailer $mailer)
{
    $this->admin->checkAccess('edit');
    $this->admin->checkAccess('delete');

    $modelManager = $this->admin->getModelManager();

    $target = $modelManager->find($this->admin->getClass(), $request->get('targetId'));

    $id = $request->get('idx');

    $conn = $this->get('doctrine.dbal.default_connection');

    $typedemail = $_POST['typemail'];

    if ($typedemail == 'decline') {
        $type = 'décliné';
        $infomail = $conn->query("SELECT * FROM MAILS WHERE nom = '$type' ");
        $infomail = $infomail->fetch();
        $sujet = $infomail['sujet'];
        $contenu = $infomail['contenu'];

        foreach ($id as $person) {
            $email = $conn->query("SELECT email FROM CONTACT WHERE id = '$person'");
            $email = $email->fetch();
            $email = $email['email'];
            $mail = (new \Swift_Message($sujet))
                ->setFrom('anaddress@email.fr')
                ->setTo($email)
                ->setBody($contenu);
            $mailer->send($mail);

Я пытался добавить:

            $transport = (new \Swift_SmtpTransport('smtp@gmail.com', 465, 'ssl'))
                ->setUsername('ronaldmcdo85@gmail.com')
                ->setPassword('xxxxxx');

            $mailer = new \Swift_Mailer($transport); 

перед $mail = ... Но он все еще не работает

Эта функция должна позволять отправлять одно или несколько сообщений электронной почты с адреса на один или несколько выбранных адресов

...