Bonjour,
Voila j'aimerai envoyer par mail les données d'un formulaire de contact sur Symfony.
Voici la configuration de mon parameters.yml
parameters
database_host localhost
database_port:
database_name: symfony
database_user: root
database_password: root
mailer_transport: mail
mailer_host: smtp.gmail.com
mailer_port: 465
mailer_encryption: ssl
mailer_user: test@gmail.com
mailer_password: '**********
Voici la configuration de mon config.yml au niveau du swift mailer
swiftmailer:
transport: '%mailer_transport%'
host: '%mailer_host%'
port: %mailer_port%
encryption: %mailer_encryption%
username: '%mailer_user%'
password: '%mailer_password%'
spool: { type: memory }
Et enfin mon code au niveau du controller
if(isset($_POST['reinitialiser'])){
$message = \Swift_Message::newInstance()
->setSubject('Réinitialisation de votre mot de passe')
->setFrom('rzj.kevin@gmail.com')
->setTo('shirukevin@gmail.com')
->setBody(
$this->renderView(
'ADVGeneralBundle:Mail:mail.html.twig',array('cp'=> $_POST['cp'])
),
'text/html'
);
$this->get('mailer')->send($message);
J'aimerai recevoir le mail dans boite mail .
Il n'y a pas d'erreur quand j'éxécute le code au niveau de symfony sauf que je recois pas de mail
Pourriez vous m'aider s'il vous plaît
Merci d'avance
Salut
Il semblerait que tu puisse définir gmail
comme mailer_transport
.
Regarde ici: https://symfony.com/doc/current/email/gmail.html
De plus, étonnant que tu utilises des POST
dans ce qui semble être un controller Sf. Regarde le composant request (Symfony\Component\HttpFoundation\Request) ;)
Salut,
Si tu es en dev, je ne peux que te conseiller d'utiliser maildev pour tester les envois de mail ;)
Oui même avec gmail comme mailer_transport, ça ne marche pas
Oui j'ai déjà utiliser le composant request en fesant if ($request->isMethod('POST') ).
Tu peux regarder dans le profiler voir si tu as bien un email qui part. Tu peux aussi sûrement retirer le spool le temps de tester.
Pour mon exam de BTS j'avais une mission avec un envoie de mail
Voici ma config.
parameters.yml
# This file is auto-generated during the composer install
parameters:
database_host: localhost
database_port: null
database_name: formarmor
database_user: root
database_password: null
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: formarmorbts@gmail.com
mailer_password:******
secret: secret
nb_par_page: 5
Controller
public function mailValidation($Client,$session_formation,$date){
$mail = $this->container->getParameter('mailer_user');
$smtp = $this->container->getParameter('mail_smtp');
$mdp = $this->container->getParameter('mailer_password');
//Construction du mail
$texte = "<h3>Bonjour, " . $Client->getNom() . " " . $Client->getPrenom() . "</h3><br>";
$texte .= "<p>Nous avons le plaisir de vous annoncer que la session du <b>". $date ."</b> est bien confirmée.</p>";
$texte .= "<h2>Détails de la session:</h2>";
$texte .= "<p>". $session_formation->getFormation()->getLibelle() ."(" . $session_formation->getFormation()->getNiveau() .")</p>";
$texte .= "<p>Au cours de cette session de <b>". $session_formation->getFormation()->getDuree() ." heures</b>, vous allez effetuer : <b>". $session_formation->getFormation()->getDescription() ."</b></p>";
$texte .= "<br> Cordialement,<br>L'administration de formarmor.";
$transport = \Swift_SmtpTransport::newInstance($smtp, 465,'ssl')->setUsername($mail)->setPassword($mdp);
$mailer = \Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance()
->setSubject("FormArmor - Confirmation d'inscription")
->setFrom(array('formarmorbts@gmail.com' => 'formarmorbts@gmail.com'))
->setTo(array(''.$Client->getEmail().'' => ''.$Client->getEmail().''))// email du client pour teste replacer par son @
->addPart($texte,'text/html');
$result = $mailer->send($message);
return $result;
}
Après, là, mon code n'est pas propre car ce n'est pas la version finale.
La fonction mail de validation permettait juste de ne pas répéter ce code 2 fois, car je pouvais l'utiliser dans deux contextes.
@Mehdikacim : j'ai tester ton code mais le
$smtp = $this->container->getParameter('mail_smtp');
M'affiche :
The parameter "mailer_smtp" must be defined.
comme erreur
Oui, tu dois le définir dans PARAMETERS.YML
Je m'excuse car aux modifs de l'exam je devais importer un bundle et ça remet à jour parameters.yml, or, j'avais bloqué l'appel de cette fonction pour l'exam car le réseau du bahut bloque l'envoie de mail hahaha
Rajoute : mail_smtp: smtp.gmail.com dans parameters
Car dans mon code j'appel pas mailer mais mail_smtp
Cela m'affiche l'erreur suivant :
Connection could not be established with host smtp.gmail.com [Network is unreachable #101]
Mon parameter
parameters:
database_host: localhost
database_port:
database_name: symfony
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mail_smtp: smtp.gmail.com
mailer_user: test@gmail.com
mailer_password: ****
secret: 8b3fdfaddad056c4ca759ffe81156eafb10f30fc
Mon controller
public function loginAction(Request $request)
{
if($request->isMethod('POST'){
$texte = "<h3>Bonjour, </h3><br>";
$texte .= "<p>Votre demande a été bien enregisté.</p>";
$transport = \Swift_SmtpTransport::newInstance($smtp, 465,'ssl')->setUsername($mail)->setPassword($mdp);
$mailer = \Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance()
->setSubject("FormArmor - Confirmation d'inscription")
->setFrom(array('test@gmail.com' => 'test@gmail.com'))
->setTo(array('A.roll@gmail.com' => 'A.roll@gmail.com'))// email du client pour teste replacer par son @
->addPart($texte,'text/html');
$result = $mailer->send($message);
smtp,mail et mdp sont bien récupéré grace à ceci ?
$this->container->getParameter('...');
As-tu testé tes identifiants que tu as mis dans ton parameters ?
A.roll@gmail.com est un mail qui existe ?
Si tout correspond, je te propose d'installer TEAMVIEWER et d'envoyer tes id (de teamviewer haha) à Mehdikacim@hotmail.fr, mon adresse mail pour que je suis controler ton PC (non rien de méchant haha) poru que je puisse voir, et manipuler ton code.
Les identifiants sont éphémères donc, aps de soucis demain je pourrais pas le controler :)
Bonjour.
@Mehdikacim: Je te le dis pour la dernière fois, arrêtes avec TeamViewer, si tu veux l'aider c'est sur le forum et non en prenant le contrôle de son PC.
En vue de son code, je comprend pas le pourquoi ça ne fonctionne pas. Etant plus à l'aise ave symfony que lui je suppose, je lui propose de résoudre son problème.
Trouve le problème MONSIEUR alors.
Bye.
Le but du forum, n'est pas de résoudre le problème à la place de la personne, mais de l'aider à le résoudre, car si tu résouds toi même son problème de la manière que tu proposes, il ne comprendra jamais où il a pu faire une erreur et par conséquent, il ne sera pas capable par la suite de pouvoir résoudre son problème quand il se représentera.
D'où le principe de trouver l'erreur avec de lui expliquer le pourquoi il ne fonctionne pas.
J'ai regardé un peu sur google et j'aimerai savoir s'il faut modifier/Configurer le php.ini pour l'envoie des mail sous symfony comme en php pure (quand en utilise l'outil sendmail) ? Peut-être est-ce là le problème ?