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());
}
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
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%
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'.
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
exit
depuis la fonction où vous utilisez le code swiftmailer. Cela réglera votre problème si votre code est correct.
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
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);