Как исправить конфигурацию swiftmailer в проекте Symfony 3.4 - PullRequest
0 голосов
/ 28 апреля 2019

Я использую Swiftmailer в моем проекте Symfony 3.4. Я запрограммировал следующий компонент для отправки почты:

class MailSender {

  private $mailer;

  public function __construct(\Swift_Mailer $mailer) {
      $this->mailer = $mailer;
  }


  public function sendMail($target, $subject, $content) {
      $message = (new \Swift_Message($subject))
      ->setFrom('***@gmail.com')        
      ->setTo($target)
      ->setBody($content, 'text/html');

      return $this->mailer->send($message);
  }

}

В мои services.yml я добавил:

AppBundle\Service\MailSender:
    arguments:
        $mailer: '@swiftmailer.mailer'

В мои параметры.yml я добавил:

parameters:
  mailer_transport: smtp
  mailer_host: smtp.gmail.com
  mailer_user: ***@gmail.com
  mailer_password: ***

Если я сейчас запустил свой сервер с консольного сервера php / bin: запустите и выполните метод sendMail, к сожалению, почта не отправляется (хотя почтовая программа возвращает 1 в качестве ответа). Symfony Profiler показывает мне следующий журнал ошибок: Возникла исключительная ситуация при очистке очереди электронной почты: ожидаемый код ответа 250, но получил код "530" с сообщением "530 5.7.0 Сначала необходимо выполнить команду STARTTLS. G185sm18205331wmf.30 - gsmtp"

Что является редким: если я сам создаю объект \ Swift_Mailer в своем TestCase, письмо действительно отправляется.

public function testSendMail() {
    // GIVEN
    $transport = (new \Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
    ->setUsername('***@gmail.com')
    ->setPassword('***');
    $swiftMailer = new \Swift_Mailer($transport);
    $mailSender = new MailSender($swiftMailer);

    // WHEN
    $mailsSent = $mailSender->sendMail('***@t-online.de', 'testMail', 'The Mailsender works!');

    // THEN
    $this->assertEquals($mailsSent, 1);
}

Кто-нибудь может понять, почему он не работает, если я внедряю \ Swift_Mailer в качестве службы?

1 Ответ

1 голос
/ 28 апреля 2019

Вы пробовали это из документации Symfony? Как использовать Gmail для отправки писем

# app/config/parameters.yml
parameters:
    # ...
    mailer_transport: gmail
    mailer_user:     your_gmail_username
    mailer_password: your_gmail_password
# app/config/config_dev.yml
swiftmailer:
    transport: '%mailer_transport%'
    username:  '%mailer_user%'
    password:  '%mailer_password%'

Обратите внимание, что вы должны установить свой mailer_transport на Gmail не smtp

...