Как проверить отправку электронной почты в Symfony 4 и Swiftmailer - PullRequest
0 голосов
/ 06 ноября 2018

это может выглядеть глупо, но мне интересно, как проверить функцию, которая отправляет электронное письмо из Gmail, а НЕ из командной строки, потому что эта штука работает нормально. Я хочу, как вызвать функцию, которая отправляет электронные письма. Я следовал этому учебнику . Мой config / packages / imap.yaml равен

imap:
    connections:
        example_connection:
            mailbox: "{imap.gmail.com:993/imap/ssl}INBOX"
            username: "kadrad26666@gmail.com"
            password: "password"

        another_connection:
            mailbox: "{localhost:143}INBOX"
            username: "username"
            password: "password"
            attachments_dir: "%kernel.root_dir%/../var/imap/attachments"
            server_encoding: "UTF-8"

My Функция индекса in IndexController is

public function index($name, \Swift_Mailer $mailer) {
    $message = (new \Swift_Message('Hello Email'))
        ->setFrom('kadrad26666@gmail.com')
        ->setTo('kadrad26666@gmail.com')
        ->setBody(
            $this->renderView(
                // templates/emails/registration.html.twig
                'emails/registration.html.twig',
                array('name' => $name)
            ),
            'text/html'
        )
    ;

    $mailer->send($message);

    return $this->render('registration.html.twig'); }

моя веточка выглядит следующим образом

 <div class="box box-solid alert-block">
  <div class="box-header">
    <h3 class="box-title"></h3>
  </div>
  <div class="box-body">
   {{render( controller('App\\Controller\\IndexController::index("hello")') ) }} 
  </div>
</div>

Именно в index($name, \Swift_Mailer $mailer) я застрял, какие параметры я должен дать.

1 Ответ

0 голосов
/ 06 ноября 2018

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

Но, если вы действительно хотите это сделать, вы можете создать объект Swift_Mailer и передать в качестве параметра twig,

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('Wonderful Subject'))
  ->setFrom(['john@doe.com' => 'John Doe'])
  ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
  ->setBody('Here is the message itself')
  ;

// Pass the $mailer to the twig as a parameter.

Подробнее: - https://swiftmailer.symfony.com/docs/messages.html

То, что я хотел бы сделать, - это создать функцию контроллера, которая вызывает функцию служб для отправки электронной почты и встраивать этот вызов контроллера в веточку (как вы уже делаете). В этой функции контроллера вы не хотите принимать параметры. Пусть автоматическое подключение обрабатывает аргументы, необходимые для сервисов.

Приветствие.

...