Bonjour, tout est dans le titre
je précise que le serveur web est sur un vps OVH donc pas restriction de port les mail fonctionne quand j'utilise la console donc la configue SMTP est bonne.
Et tout les mail de FOSUSERBUNDLE fonctionne
Code de mon controller:
$message = (new \Swift_Message())
->setSubject('Objet de l\'email')
->setFrom('contact@mondomaine.com')
->setReplyTo('contact@mondomaine.com')
->setTo('******@hotmail.fr')
->setContentType('text/html')
->setBody('Contenu du mail');
if (!$this->get('mailer')->send($message)) {
// Il y a eu un problème donc on traite l'erreur
throw new Exception('Le mail n\'a pas pu être envoyé');
}
Merci par avance :)
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');
}
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
).
Salut,
D'accord en effect le spool est sur memory mais comment expliquer que les email de FOS sont bien envoyé ?
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 !
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: ********
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
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 !