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: [email protected]
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('[email protected]')
->setTo('[email protected]')
->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()
)
);

}

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

1

Решение

Я получил его для работы на 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: [email protected]
mailer_password: password

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

    mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: [email protected]
mailer_password: password

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

Замечания:

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

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

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

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]