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());
}
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
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%
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.
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
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.
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
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);