Theskinline01,
il y a 8 ans
Personne ? j'ai chercher un peut partout sans réussir a trouver :/
SimonAndGarfunkel,
il y a 8 ans
Bonjour Theskinline01,
Dans ton config.yml, regarde la valeur du paramètre spool qui est peut-être en memory (documentation).
Si c'est ton cas, lorsque tu vérifies if (!$this->get('mailer')->send($message)), l'action d'envoyer l'email n'est pas réellement executée. Le mail est stocké puis envoyé "après" la réponse HTTP (juste avant l'événement kernel.terminate).
Theskinline01,
il y a 8 ans
Salut,
D'accord en effect le spool est sur memory mais comment expliquer que les email de FOS sont bien envoyé ?
SimonAndGarfunkel,
il y a 8 ans
Salut,
As-tu essayé de faire simplement $this->get('mailer')->send($message) dans ton controller ? Histoire de voir si le mail est bien envoyé ?
Et bien sur, ton controlleur doit retourner un ObjectResponse quoi qu'il arrive !
Theskinline01,
il y a 8 ans
ben si je fait :
$response = $this->get('mailer')->send($message);
il me retourne : 1 et aucun mail dans ma boite de réception...
mon parameters.yml
mailer_transport: smtp
mailer_host: smtp.domaine.com
mailer_port: 587
mailer_user: contact@domaine.com
mailer_password: ********
SimonAndGarfunkel,
il y a 8 ans
Je peux voir la méthode de ton controller en entier ?
Theskinline01,
il y a 8 ans
Oui,
public function submitmailconfirmepayementAction($ref, $type){
$em = $this->getDoctrine()->getManager();
if ($type == "servers") {
$commande = $em->getRepository("DinastyservSiteBundle:Commandes")->findOneBy(["ref" => $ref]);
$view = "DinastyservSiteBundle:email:comfirmpayementcommande.html.twig";
}elseif($type == "coins"){
$commande = $em->getRepository("DinastyservPayementsBundle:buy_coins")->findOneBy(["iden" => $ref]);
$view = "DinastyservSiteBundle:email:comfirmpayementcoins.html.twig";
}
$message = \Swift_Message::newInstance()
->setFrom(["contact@dinasty-serv.com" => "Dinasty-Serv"])
->setTo($commande->getUser()->getEmail())
->setSubject("Confirmation de paiement")
->setContentType("text/html")
->setBody($this->render($view,["commande" => $commande]));
$response = $this->get('mailer')->send($message);
dump($response);
exit();
}
et quand j'essais d'envoyer un mail avec la commande : php app/console swiftmailer:email:send
ça fonctionne
SimonAndGarfunkel,
il y a 8 ans
Ok, c'est normal que ton email ne soit pas envoyé. Comme évoqué dans mon 1er message, l'email n'est véritablement envoyé qu'après la reponse HTTP et juste avant l'événement kernel.terminate. En mettant un exit() dans ton controller, tu stoppes toute la suite du workflow.
Pour tester, fait ça dans ton controller :
public function submitmailconfirmepayementAction($ref, $type){
$em = $this->getDoctrine()->getManager();
if ($type == "servers") {
$commande = $em->getRepository("DinastyservSiteBundle:Commandes")->findOneBy(["ref" => $ref]);
$view = "DinastyservSiteBundle:email:comfirmpayementcommande.html.twig";
}elseif($type == "coins"){
$commande = $em->getRepository("DinastyservPayementsBundle:buy_coins")->findOneBy(["iden" => $ref]);
$view = "DinastyservSiteBundle:email:comfirmpayementcoins.html.twig";
}
$message = \Swift_Message::newInstance()
->setFrom(["contact@dinasty-serv.com" => "Dinasty-Serv"])
->setTo($commande->getUser()->getEmail())
->setSubject("Confirmation de paiement")
->setContentType("text/html")
->setBody($this->render($view,["commande" => $commande]));
$this->get('mailer')->send($message);
return new \Symfony\Component\HttpFoundation\Response('Mail sended');
// Tu peux aussi faire une redirection vers la page de ton choix
// return $this->redirectToRoute('app_home');
}
Theskinline01,
il y a 8 ans
Dac Dac, c'est parfait merci beaucoup l'amis !, et je comprend mieux pourquoi je découvre symfony donc je ne connais pas encore toutes les petite subtilité :D
En tout cas merci pour ton aide et à bientôt sur un prochain poste !