Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 Swiftmailer Not Sending

I am having trouble sending emails with symfony2 and swiftmailer. I am also a bit lost on how to debug this issue. Below is the code. First I am creating a form to display. On submit (request->method == post) I then try to send the email. I am getting no errors and it is taking me to the thankyou page, however, I am not receiving any email. I have tested on prod and dev. In dev I have opened the profiler after submission and it shows 0 emails. Any help is appreciated! Thanks!

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());
}
like image 941
Shawn Northrop Avatar asked Apr 03 '12 20:04

Shawn Northrop


4 Answers

Can you post parameters.yml?

Also ensure that spooling is disabled so the email can be instantly sent. If you have a spool entry under the Swiftmailer configuration, delete it, for example:

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

Should be:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
like image 57
Marcos Labad Avatar answered Oct 20 '22 15:10

Marcos Labad


You may have mail spooling set. If it is a case you need to run:

php app/console swiftmailer:spool:send

to send spooled emails.

Check http://symfony.com/doc/master/cookbook/email/spool.html for more.

like image 32
smentek Avatar answered Oct 20 '22 15:10

smentek


You can find here the entire procedure on how to send emails with symfony2. I just tested it at it seems to work fine.

http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email

http://symfony.com/doc/current/email.html

like image 10
Milos Cuculovic Avatar answered Oct 20 '22 17:10

Milos Cuculovic


I often set the following configuration in config_dev.yml to -prevent- mails being sent during testing, maybe you have done the same and forgot?

If this is in config_dev.yml, set it to false:

swiftmailer:
  disable_delivery:  true
like image 6
Dieter Avatar answered Oct 20 '22 15:10

Dieter