web-dev-qa-db-fra.com

Symfony2 Swiftmailer non envoyé

J'ai des problèmes pour envoyer des courriels avec symfony2 et swiftmailer. Je suis aussi un peu perdu sur la façon de déboguer ce problème. Ci-dessous le code. Je crée d'abord un formulaire à afficher. Lors de l'envoi (request-> method == post), j'essaie ensuite d'envoyer l'e-mail. Je ne reçois aucune erreur et cela me mène à la page de remerciement, cependant, je ne reçois aucun email. J'ai testé sur prod et dev. En dev, j'ai ouvert le profileur après la soumission et il affiche 0 email. 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('[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());
}
19
Shawn Northrop

Vous pouvez trouver ici la procédure complète pour l'envoi d'e-mails avec symfony2. Je viens de le tester, il semble bien fonctionner.

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

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

10
Miloš

Pouvez-vous poster parameters.yml? 

Assurez-vous également que la mise en file d'attente est désactivée afin que le courrier électronique puisse être envoyé instantanément. Si vous avez une entrée de spool dans la configuration de Swiftmailer, supprimez-la, par exemple: 

 swiftmailer: 
 transport:% mailer_transport% 
 Hôte:% mailer_Host% 
 nom d'utilisateur:% mailer_user% 
 mot de passe:% mailer_password% 
 spool: {type: memory} 

Devrait être:

 swiftmailer: 
 transport:% mailer_transport% 
 Hôte:% mailer_Host% 
 nom d'utilisateur:% mailer_user% 
 mot de passe:% mailer_password% 
24
Marcos Labad

Vous pouvez avoir un ensemble de spooling mail. Si c'est un cas, vous devez exécuter: 

php app/console swiftmailer:spool:send

envoyer des emails spoulés. 

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

13
smentek

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

S'il s'agit de config_dev.yml, définissez-le sur false:

swiftmailer:
  disable_delivery:  true
5
Dieter

Outre la solution ci-dessus, je vous suggère de supprimer die ou exit de la fonction où vous utilisez le code swiftmailer. Cela résoudra votre problème si votre code est correct.

5
Chintan Panchal

Si vous avez des problèmes pour recevoir des courriels avec ovh, siwftmailer et fosUserBundle, 

pensez à ajouter ceci dans votre fichier config.yml

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

Si vous ne le faites pas, l’ensemble d’utilisateurs fos enverra l’e-mail avec [email protected] et OVH le signaler comme spam.

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

0
0x1gene

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('[email protected]')
            ->setTo('[email protected]')
            ->setBody('message');
$this->get('mailer')->send($messageObject);
0
websky