SwiftMailer не отправляет письма в Symfony 2.5

Проведя 2 дня, пытаясь заставить его работать, я, наконец, решил спросить здесь. Я пытаюсь создать электронное письмо после того, как пользователь представит форму контакта, прочитав документацию на веб-сайте Symfony и бесчисленные другие статьи о stackoverflow и google. Я просто не могу заставить его работать. Глядя на инструкцию, похоже, что она должна быть довольно прямой, но ни одно из решений не работает. Я пытался отправлять электронные письма через Gmail и через нашу SMTP-компанию, но оба не работали

Это мои текущие parameters.yml

 swiftmailer: transport: smtp username: username (confirmed that i am entering it right) password: password (confirmed that i am entering it right) host: mail.domain.com port: 26 auth_mode: login 

Вышеупомянутая настройка не дает никакой ошибки, она просто представляет форму и отображает сообщение об успешном завершении, но письма не получаются

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

config.yml:

 swiftmailer: transport: %mailer_transport% encryption: %mailer_encryption% auth_mode: %mailer_auth_mode% host: %mailer_host% username: %mailer_username% password: %mailer_password% spool: { type: memory } 

parameters.yml:

 mailer_transport: smtp mailer_encryption: ssl mailer_auth_mode: login mailer_host: smtp.gmail.com mailer_username: myusername@gmail.com mailer_password: mypassword 

Это то, что выглядит мой контроллер, который генерирует электронную почту

 public function indexAction(Request $request) { $enquiry = new Enquiry(); $form = $this->createForm(new EnquiryType(), $enquiry); $form->handleRequest($request); if ($form->isValid()) { $message = \Swift_Message::newInstance() ->setSubject('Contact enquiry') ->setFrom('username@domain.com') ->setTo('username@domain.com') ->setBody( $this->renderView('ContactBundle:Default:contactEmail.txt.twig', array('enquiry' => $enquiry)) ); //print_r($message); $this->get('mailer')->send($message); $this->get('session')->getFlashBag()->add( 'notice', 'Your contact enquiry was successfully sent. Thank you!' ); return $this->redirect($this->generateUrl('contact_form')); } return $this->render( 'ContactBundle:Default:contact.html.twig', array( 'form' => $form->createView() ) ); } По public function indexAction(Request $request) { $enquiry = new Enquiry(); $form = $this->createForm(new EnquiryType(), $enquiry); $form->handleRequest($request); if ($form->isValid()) { $message = \Swift_Message::newInstance() ->setSubject('Contact enquiry') ->setFrom('username@domain.com') ->setTo('username@domain.com') ->setBody( $this->renderView('ContactBundle:Default:contactEmail.txt.twig', array('enquiry' => $enquiry)) ); //print_r($message); $this->get('mailer')->send($message); $this->get('session')->getFlashBag()->add( 'notice', 'Your contact enquiry was successfully sent. Thank you!' ); return $this->redirect($this->generateUrl('contact_form')); } return $this->render( 'ContactBundle:Default:contact.html.twig', array( 'form' => $form->createView() ) ); } 

Я буду очень признателен, если я получу какую-то помощь здесь, поскольку сейчас я совершенно не знаю.

Я получил его для работы на SMTP и Gmail на базе компании

Для компании SMTP

config.yml:

 swiftmailer: transport: %mailer_transport% encryption: %mailer_encryption% auth_mode: %mailer_auth_mode% host: %mailer_host% username: %mailer_username% password: %mailer_password% spool: { type: memory } 

parameters.yml:

  mailer_transport: smtp mailer_host: mail.domain.com mailer_user: username@domain.com mailer_password: password 

Для настроек Gmail config.yml остаются неизменными, но в parameters.yml делают следующее изменение

  mailer_transport: gmail mailer_host: smtp.gmail.com mailer_user: username@gmail.com mailer_password: password 

Затем перейдите по этой ссылке google, чтобы разрешить приложениям входить в ваш аккаунт для отправки писем. Вы также можете просмотреть любую подозрительную активность входа в систему, используя эту ссылку

Заметка:

В вашем контроллере, где вы говорите, что функция отправки электронной почты ->setFrom('username@gmail.com') должна соответствовать идентификатору электронной почты, который генерирует электронное письмо, иначе вы не получите электронное письмо, я посмотрел это и потратил впустую 2 дня в теме.

  $message = \Swift_Message::newInstance() ->setSubject('Contact enquiry') ->setFrom('username@gmail.com') \\match this to mailer_user in parameters.yml ->setTo('username@gmail.com') ->setBody( $this->renderView('ContactBundle:Default:contactEmail.txt.twig', array('enquiry' => $enquiry)) ); 

Вот как я получил работу 🙂 наконец, надеюсь, это поможет кому-то застрять. Я могу подтвердить, что это решение работает для меня как на сервере разработки, так и на производстве.