Symfony2 Swiftmailer N'Envoie Pas

j'ai du mal à envoyer des e-mails avec symfony2 et swiftmailer. Je suis également un peu perdu sur la façon de contester cette question. Ci-dessous est le code. Tout d'abord, je crée un formulaire à afficher. Sur submit (request->method == post) j'essaie alors d'envoyer l'email. Je ne reçois aucune erreur et cela m'amène à la page de remerciement, cependant, je ne reçois aucun courriel. J'ai testé sur prod et dev. Dans dev j'ai ouvert le profileur après soumission et il montre 0 emails. Toute aide est appréciée! Merci!

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('no-reply@mysite.com')
            ->setTo('email@mysite.com')
            ->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());
}
19
demandé sur Shawn Northrop 2012-04-04 00:20:09

7 réponses

vous pouvez trouver ici la procédure complète sur la façon d'envoyer des e-mails avec symfony2. Je viens de le tester, ça a l'air de marcher.

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

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

10
répondu Miloš 2017-09-14 08:52:08

vous Pouvez poster des paramètres.yml?

assurez-vous également que la mise à jour est désactivée afin que le courriel puisse être envoyé instantanément. Si vous avez une entrée spool sous la configuration Swiftmailer, supprimez-la, par exemple:

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

Devrait être:

swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
24
répondu Marcos Labad 2018-08-16 20:22:20

Vous avez peut-être une boîte aux lettres. Si c'est le cas, vous devez exécuter:

php app/console swiftmailer:spool:send

pour envoyer des emails spooled.

Case http://symfony.com/doc/master/cookbook/email/spool.html pour plus d'.

13
répondu smentek 2013-04-23 14:47:36

je mets souvent la configuration suivante dans config_dev.yml to-prevent-mails envoyés pendant les tests, peut-être avez-vous fait la même chose et oublié?

Si c'est dans config_dev.yml, affectez la valeur false:

swiftmailer:
  disable_delivery:  true
4
répondu Dieter 2012-04-05 12:32:47
die ou exit depuis la fonction où vous utilisez le code swiftmailer. Cela réglera votre problème si votre code est correct.

4
répondu Chintan Panchal 2017-05-02 10:51:36

je vous avez des problèmes de réception d'e-mails avec ovh, siwftmailer et fosUserBundle,

veuillez considérer ajouter ceci dans votre configuration.yml

fos_user:
    from_email:
            address:        noreply@yourdomain.com
            sender_name:    yourname

si vous ne le faites pas, fos user bundle enverra le courriel avec noreply@exemple.com et OVH signale que c'est du spam.

source: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/emails.md

0
répondu 0x1gene 2014-06-06 16:19:41

config.yml

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

contrôleur/action

$messageObject = \Swift_Message::newInstance()
            ->setSubject('Subject')
            ->setFrom('username@xx.eu')
            ->setTo('xxx@stackoverflow.eu')
            ->setBody('message');
$this->get('mailer')->send($messageObject);
0
répondu websky 2015-04-28 07:55:24