Подтвердить что ты не робот

Symfony2 Swiftmailer не отправляет

У меня возникли проблемы с отправкой писем с symfony2 и swiftmailer. Я также немного потерял, как отладить эту проблему. Ниже приведен код. Сначала я создаю форму для отображения. На submit (request- > method == post) я попытаюсь отправить электронное письмо. Я не получаю никаких ошибок, и он забирает меня на страницу thankyou, однако я не получаю никаких писем. Я тестировал на prod и dev. В dev я открыл профилировщик после отправки, и он показывает 0 сообщений электронной почты. Любая помощь приветствуется! Спасибо!

public function contactAction(Request $request)
{
    $defaultData = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message');
    $form = $this->createFormBuilder($defaultData)
        ->add('name', 'text')
        ->add('email', 'email')
        ->add('subject', 'text')
        ->add('message', 'textarea')
        ->getForm();

    if($request->getMethod() == 'POST') {
        $form->bindRequest($request);
        $data = $form->getData();
        $message = \Swift_Message::newInstance()
            ->setSubject($data['subject'])
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody($this->renderView('AdaptiveSiteBundle:Default:email.txt.twig', array('name' => $data['name'], 'message' => $data['message'])))
        ;
        $this->get('mailer')->send($message);

        return $this->redirect($this->generateUrl('thankyou'));
    } 

    return array("form" => $form->createView());
}
4b9b3361

Ответ 2

Можете ли вы опубликовать параметры .yml?

Также убедитесь, что буферизация отключена, поэтому электронная почта может быть немедленно отправлена. Если в настройках swiftmailer имеется запись очереди, удалите ее, например:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
    spool:     { type: memory }

Должно быть:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%

Ответ 3

Возможно, у вас установлен буферизация почты. Если это случай, вам нужно запустить:

php app/console swiftmailer:spool:send

для отправки буферизованных писем.

Подробнее о http://symfony.com/doc/master/cookbook/email/spool.html.

Ответ 4

Помимо вышеуказанного решения, я предлагаю удалить функцию die или exit из функции, в которой вы используете код swiftmailer. Это исправит вашу проблему, если ваш код будет правильным.

Ответ 5

Я часто устанавливаю следующую конфигурацию в config_dev.yml для -prevent-mail, отправляемых во время тестирования, возможно, вы сделали то же самое и забыли?

Если это указано в config_dev.yml, установите для него значение false:

swiftmailer:
  disable_delivery:  true

Ответ 6

У вас проблемы с получением электронной почты с помощью ovh, siwftmailer и fosUserBundle,

пожалуйста, добавьте это в свой config.yml

fos_user:
    from_email:
            address:        [email protected]
            sender_name:    yourname

Если вы этого не сделаете, fos user bundle отправит электронное письмо с сообщением [email protected] и OVH как спамом.

источник: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/emails.md

Ответ 7

config.yml

# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    encryption: ssl
    auth_mode:  login
    host:       smtp.xx.eu
    username:   username
    password:   password 

контроллер/действие

$messageObject = \Swift_Message::newInstance()
            ->setSubject('Subject')
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody('message');
$this->get('mailer')->send($messageObject);