Я использую 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 в качестве службы?