IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Envoi de mail avec Symfony 7.4


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Envoi de mail avec Symfony 7.4
    Bonjour,
    Quelqu'un peut-il me donner la syntaxe à utiliser dans le fichier .ENV de symfony (7.4) pour envoyer des mails en SMTP sur une boîte mail de chez Orange.
    Avant j'utilisais swiftmailer et ça marchait très bien. Maintenant Symfony utilise mailer et en plus si j'ai bien compris messenger intervient aussi. J'ai modifié le fichier messenger.yaml comme indiqué par Grafikart.
    Donc normalement messenger n'intervient plus (mais je ne peux le confirmer, je fais confiance aux connaissances de Grafikart).
    Lorsque je fais un dd($data) en récupérant les données de mon formulaire de mail... toutes les infos saisies dans le formulaire sont là. Donc mon code fonctionne correctement. C'est l'envoi du mail qui ne se fait pas.
    Il y a donc quelque chose dans le système qui bloque l'envoi et je ne comprend pas ce qui est en cause.
    J'ai le sentiment que c'est le paramétrage du MAILER_DSN dans le fichier .ENV qui n'est pas correct. D'où ma demande... est-ce que quelqu'un connait la syntaxe à indiquer pour un envoi en SMTP sur Orange ?
    Merci d'avance à ceux qui prendront 5 minutes pour me répondre.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Bonjour,

    C'est un passage classique et parfois un peu frustrant quand on quitte le confort de SwiftMailer pour le composant Mailer de Symfony.

    1. La syntaxe du MAILER_DSN pour Orange
    Pour un compte Orange (ou Wanadoo), la syntaxe SMTP standard dans votre fichier .env doit ressembler à ceci :

    Code Ini, TOML : Sélectionner tout - Visualiser dans une fenêtre à part
    MAILER_DSN=smtp://VOTRE_EMAIL@orange.fr:VOTRE_MOT_DE_PASSE@smtp.orange.fr:465?encryption=ssl

    Quelques précisions importantes :

    Le port : Le port 465 avec l'option ?encryption=ssl est le plus stable. Si cela ne fonctionne pas, vous pouvez tenter le port 587 avec ?encryption=tls.

    Caractères spéciaux : Si votre mot de passe contient des caractères spéciaux (comme @, /, +), vous devez les encoder en URL (URL-encode). Par exemple, un @ devient %40.

    Authentification : Assurez-vous que l'adresse email utilisée dans le DSN est la même que celle définie dans le setFrom() de votre code PHP.

    2. Le rôle de Messenger (Le "piège" du mode asynchrone)
    Vous avez raison, par défaut, Symfony Mailer essaie d'envoyer les mails de manière asynchrone via Messenger. Si aucun "worker" ne tourne pour traiter la file d'attente, le mail reste bloqué dans votre base de données ou votre transport, sans jamais partir.

    Si vous avez suivi les conseils de Grafikart pour désactiver cet aspect, votre fichier config/packages/messenger.yaml doit ressembler à ceci (ou la ligne correspondante doit être commentée) :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    framework:
        messenger:
            transports:
                # Commenter ou supprimer la redirection des mails vers un transport
                # async: '%env(MESSENGER_TRANSPORT_DSN)%'
     
            routing:
                # S'assurer que Symfony\Component\Mailer\Messenger\SendEmailMessage n'est PAS routé vers 'async'
                'Symfony\Component\Mailer\Messenger\SendEmailMessage': sync

    En forçant le routage sur sync, le mail est envoyé immédiatement durant la requête HTTP. C'est plus lent pour l'utilisateur, mais c'est le meilleur moyen de vérifier que votre configuration SMTP est correcte.

    3. Comment tester et déboguer ?
    Si malgré le bon DSN cela ne part toujours pas :

    Videz le cache : Symfony garde souvent la configuration du .env en cache.

    Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console cache:clear
    Utilisez la commande de test : Symfony propose une commande intégrée pour tester l'envoi sans passer par votre formulaire :

    Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console mailer:test votre-email@domaine.com

    Cette commande vous donnera une erreur beaucoup plus précise que le simple fait que le mail n'arrive pas.

    Vérifiez le Profiler : Si vous êtes en environnement de développement (APP_ENV=dev), allez dans la barre de débogage de Symfony, cliquez sur l'icône de l'enveloppe. Vous verrez si le mail a été "collecté" par Symfony et s'il y a une erreur de transport.

    Note sur Orange : Les serveurs SMTP d'Orange sont parfois capricieux avec les envois fréquents ou les scripts automatisés. Si vous prévoyez un volume important, passer par un service dédié (type Mailjet, SendGrid ou Brevo) avec leur propre "Bridge" Symfony est souvent plus simple sur le long terme.

  3. #3
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut
    Déjà pour commencer... UN GRAND MERCI pour cette réponse très documentée et explicite.
    Je teste immédiatement.

  4. #4
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Ben problème...
    J'ai fait exactement ce que vous m'avez indiqué :
    1- j'ai modifié le fichier messenger.yaml j'ai tout commenté sauf ce que vous m'avez dit. Donc mon messenger.yaml est exactement comme le votre.
    2- j'ai modifié le fichier .env en mettant la ligne indiquée pour le SMTP orange.
    3- j'ai essayé avec les 2 ports 465 ssl et 587 tls
    4- j'ai testé le MAILER avec la ligne de commande indiquée

    A CHAQUE MODIFICATION j'ai vidé le cache (je suis en mode DEV dans le fichier .ENV)

    J'ai tout le temps cette erreur : Invalid Messenger routing configuration: the "Symfony\Component\Mailer\Messenger\SendEmailMessage" class is being routed to a sender called "sync". This is not a valid transport or service id.

    Si je comprend le message, il me dit que la configuration de mon mode de transport est "SYNC" et que ce n'est pas valide.
    Pourtant cela veut dire qu'il doit contourner messenger et envoyer immédiatement le mail. Qu'est-ce qui cloche ?

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Bonjour,

    il y a 2 choix pour résoudre ce problème :
    Choix A :

    Le message d'erreur est logique : Symfony cherche un transport nommé sync dans la configuration de Messenger. Or, si vous ne l'avez pas explicitement déclaré dans la section transports, Symfony considère que ce n'est pas un identifiant de service valide et refuse de démarrer.

    Voici les deux façons de corriger cela très simplement.

    Option 1 : Déclarer explicitement le transport sync
    Si vous voulez forcer Messenger à traiter le mail de manière synchrone (envoi immédiat pendant la requête), vous devez lui expliquer ce que signifie le mot sync dans la section transports de votre fichier config/packages/messenger.yaml :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    framework:
        messenger:
            transports:
                sync: 'sync://' # <-- C'est cette ligne qui manque !
     
            routing:
                'Symfony\Component\Mailer\Messenger\SendEmailMessage': sync

    Option 2 : Retirer totalement le mailer de Messenger (Le plus simple)
    Si votre but est simplement d'envoyer le mail en direct sans que Messenger n'intervienne du tout, la méthode la plus propre consiste à supprimer ou commenter la ligne de routage. Si Symfony ne trouve aucune règle pour SendEmailMessage, il n'essaiera pas de le mettre en file d'attente et l'enverra de manière classique et synchrone par défaut.

    Dans votre fichier config/packages/messenger.yaml, laissez la partie routing vide ou commentez la ligne en question :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ramework:
        messenger:
            routing:
                # Commentez ou supprimez simplement cette ligne :
                # 'Symfony\Component\Mailer\Messenger\SendEmailMessage': sync

    Une fois l'une de ces deux modifications effectuées, n'oubliez pas de vider à nouveau le cache avec la commande habituelle php bin/console cache:clear.

    La commande php bin/console mailer:test votre@email.com devrait enfin s'exécuter et vous donner le véritable statut de la connexion SMTP avec les serveurs d'Orange sans être bloquée par Messenger.

    Choix B
    Ne vous inquiétez pas, votre logique est la bonne : vous voulez que le mail parte immédiatement. Le message d'erreur est simplement une réaction de Symfony qui vous dit : « Tu me demandes d'envoyer les e-mails vers un transport nommé sync, mais je ne le trouve nulle part dans ma liste ! »

    Dans Messenger, si on utilise un nom dans la section routing, il doit obligatoirement être déclaré au préalable dans la section transports.

    Voici les deux façons de résoudre ce blocage.

    Option 1 : Supprimer totalement le routage (La plus simple)
    Puisque vous voulez envoyer les e-mails immédiatement en direct sans passer par une file d'attente Messenger, le plus simple est de ne rien lui indiquer du tout concernant les e-mails. Par défaut dans Symfony, s'il n'y a pas de règle de routage pour un message, il est exécuté de manière synchrone.

    Ouvrez votre fichier config/packages/messenger.yaml et commentez ou supprimez la ligne dans la section routing :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    framework:
        messenger:
            transports:
                # Vos transports habituels...
     
            routing:
                # Commentez ou supprimez cette ligne :
                # 'Symfony\Component\Mailer\Messenger\SendEmailMessage': sync

    Option 2 : Définir explicitement le transport synchrone
    Si vous préférez garder la règle de routage pour que votre fichier reste explicite, vous devez simplement déclarer le transport sync dans la section transports pour que Symfony sache à quoi cela correspond.

    Modifiez votre config/packages/messenger.yaml comme ceci :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    framework:
        messenger:
            transports:
                # On déclare explicitement le transport synchrone
                sync: 'sync://'
     
            routing:
                # Maintenant, Symfony comprend la destination "sync"
                'Symfony\Component\Mailer\Messenger\SendEmailMessage': sync

    Prochaine étape pour tester :
    • Appliquez l'Option 1 ou l'Option 2 selon votre préférence.
    • Videz le cache pour être sûr qu'il prenne en compte la modification : php bin/console cache:clear.
    • Relancez le test avec la commande : php bin/console mailer:test votre@email.com


    L'erreur liée à Messenger aura disparu. Si l'e-mail ne part toujours pas après cela, la commande de test vous affichera l'erreur brute renvoyée par le serveur SMTP d'Orange (comme un refus d'authentification ou un blocage de port), ce qui permettra d'ajuster le DSN final.

  6. #6
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Pas résolu
    J'ai suivi exactement ce que vous m'avez indiqué :
    1- j'ai testé les options 1 et 2
    2- Après chaque option j'ai vidé le cache
    3- après chaque option j'ai fait mailer:test + cache vidé à chaque étape

    Dans tous les cas j'ai cette erreur : Expected response code "250" but got code "501", with message "501 5.1.0 ESNEw2mYPcM3V Emetteur invalide, merci d'utiliser le serveur smtp de votre fournisseur de service email ou une adresse email Orange valide. Invalid Sender.OFR303_396 [396]"

    Qu'est-ce que ça veut dire le passage souligné (par moi) ?
    En plus j'ai fait mailer:test avec 3 adresses mails différentes. Les 3 sont valides chez Orange. Ce qui exclut la fin du message d'erreur "ou une adresse email Orange valide".

    Donc je reste coincé...

  7. #7
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Oh... j'y pense
    Dans un autre fil de discussion j'ai vu qu'il fallait : ... Dans le user, il faut encoder le @ du mail en %40
    Dans mon mot de passe j'ai aussi "!!" ... est-ce que le problème ne viendrait pas de là ?
    Et dans mon adresse j'ai un "-" (le tiret de la touche 6).
    Faut-il encoder ces éléments ?

    Au passage, je ne sais pas comment encoder les caractères spéciaux. Où est-ce qu'on trouve cela.

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Citation Envoyé par HTML5 Voir le message
    Dans mon mot de passe j'ai aussi "!!" ... est-ce que le problème ne viendrait pas de là ?
    Et dans mon adresse j'ai un "-" (le tiret de la touche 6).
    Faut-il encoder ces éléments ?

    Au passage, je ne sais pas comment encoder les caractères spéciaux. Où est-ce qu'on trouve cela.
    Faut-il encoder le "!!" et le "-" ?
    Le tiret (-) : Non. Le tiret est un caractère "non-réservé". Il est parfaitement autorisé dans une URL et dans une adresse mail au sein du DSN. Vous pouvez le laisser tel quel.

    Les points d'exclamation (!!) : Oui, impérativement. Bien que certains parseurs les acceptent, le ! est un caractère spécial. Pour être tranquille, il faut l'encoder.

    Le mot de passe : Si votre mot de passe contient des caractères comme #, ?, &, + ou !, l'encodage est obligatoire.

    "Cheat Sheet" des encodages fréquents
    Voici les correspondances pour les caractères les plus courants dans les identifiants et mots de passe :
    Caractère Code à utiliser
    @ %40
    ! %21
    # %23
    $ %24
    + %2B
    & %26
    : %3A
    / %2F
    ? %3F
    Comment trouver ces codes (La méthode "propre")
    Puisque vous travaillez en PHP, vous n'avez pas besoin de chercher un tableau sur internet à chaque fois. Vous pouvez générer la chaîne exacte en utilisant la fonction native urlencode().

    Vous pouvez créer un petit script de test rapide (ou l'exécuter via php -a en ligne de commande) :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $user = "votre-nom@orange.fr";
    $password = "MonMotDePasse!!";
     
    echo urlencode($user);      // Résultat : votre-nom%40orange.fr
    echo "\n";
    echo urlencode($password);  // Résultat : MonMotDePasse%21%21

    Votre nouvelle syntaxe .env
    Si votre mot de passe est Mdp!! et votre mail jean-pierre@orange.fr, votre ligne devrait ressembler à ceci :

    Code Ini, TOML : Sélectionner tout - Visualiser dans une fenêtre à part
    MAILER_DSN=smtp://jean-pierre%40orange.fr:Mdp%21%21@smtp.orange.fr:465?encryption=ssl

    Une dernière vérification sur l'erreur "Emetteur invalide"
    L'encodage réglera les problèmes de connexion (Authentication Failed). Cependant, votre erreur précédente était une 501 (Emetteur invalide).

    Même avec un DSN parfaitement encodé, Orange restera bloqué si, dans votre code PHP, vous faites ceci :

    $email->from('contact@mon-site.com'); // ERREUR 501Pour Orange, le from doit être l'adresse mail Orange qui sert à l'authentification :

    $email->from('jean-pierre@orange.fr'); // OKSi vous avez besoin d'envoyer des mails avec une autre adresse d'expédition que votre adresse Orange personnelle, il faudra malheureusement envisager un autre service SMTP (comme Brevo ou Mailjet) qui autorise la délégation de domaine.

    Est-ce que l'encodage du !! en %21%21 change le message d'erreur lors du mailer:test ?
    Citation Envoyé par HTML5 Voir le message
    Dans tous les cas j'ai cette erreur : Expected response code "250" but got code "501", with message "501 5.1.0 ESNEw2mYPcM3V Emetteur invalide, merci d'utiliser le serveur smtp de votre fournisseur de service email ou une adresse email Orange valide. Invalid Sender.OFR303_396 [396]"

    Qu'est-ce que ça veut dire le passage souligné (par moi) ?
    Cette erreur 501 5.1.0 est un grand classique des serveurs SMTP d'Orange. Elle est liée à une règle de sécurité anti-spoofing (anti-usurpation d'identité).

    Le message "Emetteur invalide" signifie que le serveur d'Orange refuse d'envoyer le mail parce que l'adresse email que vous déclarez comme expéditeur (le "From") ne correspond pas exactement à l'adresse email utilisée pour vous authentifier dans le fichier .env.

    Voici pourquoi vous restez coincé et comment résoudre cela :

    1. Le problème avec la commande mailer:test
    Quand vous tapez php bin/console mailer:test adresse@orange.fr, l'adresse que vous saisissez est le destinataire (le "To").

    Si vous n'avez pas configuré d'expéditeur par défaut dans Symfony, le composant Mailer utilise souvent une adresse générique comme hello@example.com. Orange voit arriver une demande d'envoi avec From: hello@example.com alors que vous êtes connecté avec votre compte Orange : il bloque immédiatement avec cette erreur 501.

    Le test à faire :
    Forcez l'expéditeur dans votre commande de test pour qu'il soit identique à celui de votre .env :

    Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
    php bin/console mailer:test destinataire@gmail.com --from=votre_adresse_orange@orange.fr
    (Remplacez votre_adresse_orange@orange.fr par l'email exact que vous avez mis dans le MAILER_DSN).

    2. Solution permanente : Configurer l'expéditeur global
    Pour éviter de devoir redéfinir l'expéditeur à chaque fois dans votre code PHP, le plus simple est de le déclarer globalement dans votre configuration.

    Ouvrez le fichier config/packages/mailer.yaml et ajoutez la section envelope :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    framework:
        mailer:
            dsn: '%env(MAILER_DSN)%'
            envelope:
                sender: 'votre_adresse_exacte@orange.fr' # L'adresse de votre compte Orange
     
    # Optionnel : Forcer le "From" par défaut pour tous les emails
    services:
        _defaults:
            bind:
                $adminEmail: 'votre_adresse_exacte@orange.fr'

    3. Rappel crucial sur le fichier .env
    Assurez-vous que votre syntaxe dans le .env est parfaitement "propre". Pour Orange, la structure doit être :

    Code Ini, TOML : Sélectionner tout - Visualiser dans une fenêtre à part
    MAILER_DSN=smtp://IDENTIFIANT%40orange.fr:MOT_DE_PASSE@smtp.orange.fr:465?encryption=ssl
    L'identifiant : Il doit être complet (avec le @orange.fr). Mais attention : dans une URL de DSN, le caractère @ est un séparateur. Vous devez donc impérativement remplacer le @ de votre identifiant par %40.

    Exemple : Si votre mail est jean.dupont@orange.fr, l'identifiant dans le DSN devient jean.dupont%40orange.fr.

    Résumé de la situation
    L'erreur "Emetteur invalide" confirme que votre connexion au serveur d'Orange réussit (puisqu'il vous répond), mais qu'il rejette le contenu du mail car l'adresse "From" n'est pas autorisée.

    Vérifiez ces deux points et cela devrait fonctionner :

    Utilisez bien %40 à la place du @ dans votre identifiant à l'intérieur du MAILER_DSN.

    Dans votre code PHP (ou via l'option --from en ligne de commande), assurez-vous que la méthode ->from('...') utilise exactement la même adresse que celle de votre compte Orange.

  9. #9
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Pas sûr de comprendre
    Encore une fois MERCI de prendre autant de temps pour essayer de me sortir de mes ennuis.

    Il faut que je reprécise le contexte. Car je pense avoir compris vos explications, mais peut-être n'ai-je pas tout dit.

    En fait le contexte est le suivant :
    Je fais un site pour un ami qui a des chambres d'hôte. Il y a une page pour que le futur client envoie un mail pour indiquer le séjour qu'il veut faire.
    Donc dans cette page il y a 3 champs :
    • le mail de l'expéditeur
    • le sujet
    • le message


    et bien sûr le bouton envoyer.
    Je récupère les données dans mon ContactController. Mais en plus des infos en provenance du formulaire, il y a un champ "To" qui indique l'adresse mail du destinataire (mon ami).
    Et ensuite, je fais un send($email)
    Donc l'adresse récupérée sera toujours différente, et l'adresse du destinataire sera toujours celle de mon ami, écrite en dur dans mon code du ContactController.

    Au final, j'ai compris pour le MAILER_DSN dans le fichier.ENV
    Mais faut-il que j'encode aussi l'adresse mail du destinataire (mon ami) qui est dans le ContactController ? Et si oui, y a-t-il un formalisme à récupéré ou peut-on écrire tout simplement... ->to('jean-dupont%40orange.fr')

  10. #10
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Avec ces précisions, on a mis le doigt sur le problème structurel. En tant que développeur, vous allez vite comprendre la logique "cruelle" des serveurs SMTP d'Orange.

    1. Faut-il encoder le "To" dans le Controller ?
    La réponse est non.

    L'encodage avec des %40 ou %21 est réservé uniquement au fichier .env, car dans ce fichier, la configuration est lue comme une URL.

    Dans votre code PHP (votre ContactController), vous manipulez des chaînes de caractères classiques. Symfony s'occupe de tout. Vous devez donc écrire l'adresse normalement :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    ->to('jean-dupont@orange.fr') // Syntaxe normale, pas d'encodage ici.

    2. Le cœur du problème : L'usurpation d'identité (Spoofing)
    L'erreur 501 que vous recevez vient de là. Voici ce qui se passe techniquement :

    Votre code dit à Orange : "Hé, je suis ami@orange.fr (authentification SMTP), et je veux envoyer un mail qui provient de client@gmail.com (le From de votre formulaire)."

    Orange répond : "Minute ! Tu n'as pas le droit de signer un mail au nom de gmail.com. C'est de l'usurpation d'identité."

    Les fournisseurs d'accès (Orange, SFR, etc.) sont extrêmement stricts. Ils interdisent d'utiliser une adresse d'expédition (From) différente de l'adresse utilisée pour se connecter au serveur.

    3. La solution : Le "Reply-To"
    Pour que cela fonctionne chez Orange, vous devez inverser la logique. Vous allez envoyer le mail à votre ami, de la part de votre ami, mais en indiquant que s'il répond, cela ira au client.

    Voici comment modifier votre code dans le ContactController :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $email = (new Email())
        // L'expéditeur DOIT être l'adresse Orange configurée dans le .env
        ->from('votre-ami@orange.fr') 
     
        // Le destinataire est aussi votre ami (puisqu'il reçoit la demande)
        ->to('votre-ami@orange.fr')
     
        // C'EST ICI que vous mettez l'adresse du client qui a rempli le formulaire
        ->replyTo($data['email_du_client']) 
     
        ->subject($data['sujet'])
        ->html($data['message']);
     
    $mailer->send($email);

    Pourquoi faire cela ?

    Sécurité : Orange accepte le mail car le From correspond à l'utilisateur authentifié.

    Pratique : Quand votre ami recevra le mail dans sa boîte Orange et qu'il cliquera sur "Répondre" dans son logiciel de messagerie, l'adresse du client s'insérera automatiquement grâce au replyTo.

    Résumé de votre check-list finale :
    • Fichier .ENV : Gardez l'encodage (%40 pour le mail et %21 pour les !! du mot de passe).
    • Fichier messenger.yaml : Gardez-le en mode sync (ou sans routage) comme on l'a vu pour éviter que le mail ne reste bloqué en file d'attente.
    • Controller : * Utilisez des adresses mails normales (sans %40).

      Forcez le ->from() avec l'adresse Orange de votre ami.

      Utilisez ->replyTo() pour l'adresse du client.


    Si vous faites cela, l'erreur 501 devrait disparaître instantanément et le mail arrivera dans la boîte de votre ami. On y est presque !

    Est-ce que cette logique de "Reply-To" vous semble claire pour votre implémentation ?

  11. #11
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut On approche de la solution
    Bon j'ai encore cette erreur :... Expected response code "250" but got code "550", with message "550 5.2.0 EUu4w4dfqUIbg Mail rejete. Identifiant et adresse mail appartiennent a 2 utilisateurs differents. OFR203_528 [528]".
    Là j'ai du mal à comprendre.
    Je résume ce que j'ai fait :
    • mailer.yaml... j'ai fait un copier-coller de ce que vous m'avez envoyé
    • messenger.yaml... il est vide donc messenger n'intervient plus
    • fichier .ENV... j'ai mis pour le MAILER_DSN la syntaxe exactement comme vous me l'avez dit en remplaçant !! par %21%21 et @ par %40
    • Dans mon ContactController l'adresse du destinataire est en clair, sans encodage comme vous me l'avez dit

    Donc pour faire les tests, je ne vais pas casser les pieds de mon ami en lui envoyant des mails (à condition que ça marche).
    De ce fait c'est mon adresse que j'utilise. Elle est donc dans le fichier .ENV dans le fichier mailer.yaml et dans le le ContactController
    (Quand tout fonctionnera, c'est l'adresse mail de mon ami qui sera à la place de la mienne.)

    Alors pourquoi ce "Identifiant et adresse mail appartiennent a 2 utilisateurs differents"... je suis perplexe et surtout je ne comprend pas le problème.

  12. #12
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Je comprends votre perplexité, car on touche ici à la partie la plus pointilleuse du protocole SMTP, surtout avec un fournisseur historique comme Orange.

    L'erreur 550 5.2.0 (Identifiant et adresse mail appartiennent à 2 utilisateurs différents) signifie qu'il y a une discordance entre deux éléments que Symfony envoie à Orange :

    L'authentification : Le login que vous avez mis dans le .env.

    L'enveloppe de l'expéditeur : L'adresse que Symfony déclare au serveur juste avant d'envoyer le contenu du mail (la commande MAIL FROM).

    Voici précisément ce qui bloque certainement chez vous :

    1. Le piège du copier-coller dans mailer.yaml
    Vous m'avez dit avoir fait un copier-coller de mon exemple pour mailer.yaml. Dans cet exemple, j'avais mis :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    framework:
        mailer:
            dsn: '%env(MAILER_DSN)%'
            envelope:
                sender: 'votre_adresse_exacte@orange.fr' # <-- LE PROBLÈME EST PEUT-ÊTRE ICI

    Si vous n'avez pas remplacé 'votre_adresse_exacte@orange.fr' par votre véritable adresse mail Orange (celle qui est dans votre .env), Symfony envoie "votre_adresse_exacte@orange.fr" comme expéditeur technique. Orange compare cela avec votre identifiant de connexion et, comme ça ne correspond pas, il rejette le mail avec l'erreur 550.

    Ma recommandation :
    Pour vos tests, supprimez simplement les deux lignes envelope et sender dans mailer.yaml. Laissez uniquement :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    framework:
        mailer:
            dsn: '%env(MAILER_DSN)%'
    En faisant cela, vous laissez votre ContactController décider seul de l'expéditeur via le ->from().

    2. Vérification dans votre ContactController
    Puisque vous utilisez votre propre adresse pour les tests, assurez-vous que votre code ressemble exactement à ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $email = (new Email())
        ->from('VOTRE_ADRESSE@orange.fr') // Doit être identique au .env
        ->to('VOTRE_ADRESSE@orange.fr')   // Pour vos tests
        ->subject('Test Symfony')
        ->text('Ça va finir par marcher !');

    Attention : Si vous avez mis un nom d'affichage comme ->from(new Address('VOTRE_ADRESSE@orange.fr', 'Mon Nom')), certains serveurs Orange peuvent mal l'interpréter. Testez d'abord avec juste l'adresse en chaîne de caractères simple.

    3. Dernier détail sur le .env
    Vérifiez une dernière fois que l'identifiant au début du DSN est bien votre adresse complète, encodée.
    Si votre mail est dupont@orange.fr, le début de votre DSN doit être :
    MAILER_DSN=smtp://dupont%40orange.fr:MOT_DE_PASSE_ENCODE@smtp.orange.fr...

    Pourquoi Orange est si "pénible" ?
    Pour Orange, si vous vous connectez avec le compte A, vous n'avez le droit d'envoyer un mail qu'avec l'adresse A. Si Symfony envoie par erreur (à cause du fichier yaml ou d'un paramètre caché) l'adresse B, le serveur considère que vous essayez de pirater le compte de quelqu'un d'autre pour envoyer du spam.

    Le plan d'action pour vous débloquer :

    Dans config/packages/mailer.yaml, supprimez la section envelope.

    Videz le cache : php bin/console cache:clear.

    Relancez le test en ligne de commande :
    php bin/console mailer:test VOTRE_MAIL@orange.fr --from=VOTRE_MAIL@orange.frSi cette commande mailer:test avec le --from identique au destinataire fonctionne, alors votre configuration est enfin correcte et le problème ne viendra plus que de votre code PHP dans le Controller.

    On ne lâche rien, on va l'avoir !

  13. #13
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Incroyable ... ça marche !
    J'ai modifié mon code dans le ContactController et maintenant... ça marche.
    Par contre je suis scotché.
    Autant je vois ce qu'on fait, mais je ne comprend pas cette question d'usurpation d'identité.
    Jusque récemment, la manière dont je procédais ne posait aucun problème et maintenant il faut agir de manière presque absurde pour que ça fonctionne. C'est dingue.
    Au final, MERCI INFINIMENT d'avoir pris tout ce temps pour m'aider.
    Et en plus j'ai appris plein de choses grâce à vous.

  14. #14
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    C'est une excellente nouvelle ! On a enfin dompté les serveurs d'Orange et les caprices de Messenger. C'est une petite victoire, mais elle fait du bien.

    Je comprends tout à fait votre sentiment d'absurdité. Pour un développeur qui a connu une époque où le Web était plus "ouvert", ces nouvelles contraintes ressemblent souvent à des bâtons dans les roues.

    Pourquoi ce qui était simple est devenu "absurde" ?
    Il y a 10 ou 15 ans, les serveurs SMTP étaient ce qu'on appelle des "Open Relays" (ou presque). On pouvait se connecter et envoyer un mail avec n'importe quel From. C’est exactement comme cela que le spam et le phishing ont explosé : des pirates envoyaient des millions de mails en prétendant être "banque@credit-agricole.fr" tout en utilisant une simple connexion Orange ou SFR.

    Pour contrer cela, trois protocoles ont été généralisés : SPF, DKIM et DMARC.

    L'idée : Les serveurs de destination (comme Gmail ou Outlook) vérifient maintenant si le serveur qui envoie le mail (Orange dans votre cas) a bien l'autorisation légale de parler au nom du domaine utilisé dans l'adresse From.

    La conséquence : Orange, pour protéger sa réputation et éviter que ses serveurs ne soient "blacklistés" mondialement, bloque désormais toute tentative d'envoi où l'expéditeur déclaré ne correspond pas exactement à l'utilisateur qui paie l'abonnement.

    C’est pour cela que l’astuce du Reply-To est devenue le standard pour les formulaires de contact : on respecte la loi du serveur (le From est légitime) tout en gardant l’aspect pratique pour l’utilisateur (le bouton Répondre fonctionne).

    Le mot de la fin sur Symfony Mailer
    Le passage de SwiftMailer à Symfony Mailer a été brutal pour beaucoup car Symfony a fait le choix de la modernité : tout est pensé pour être asynchrone (via Messenger) et ultra-sécurisé par défaut. C'est plus "robuste" pour des grosses applications, mais c'est clairement plus complexe pour un simple site de chambres d'hôte.

    Dernier petit conseil de "vieux routier" :
    Si jamais votre ami commence à recevoir beaucoup de demandes et que les mails finissent en spam, ne perdez plus de temps avec les serveurs SMTP des fournisseurs d'accès. Des services comme Brevo (français) ou Mailjet ont des offres gratuites très généreuses et des "Bridges" Symfony qui s'installent en une ligne dans le .env sans jamais avoir de soucis d'identifiant ou de port 465/587.

  15. #15
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Test mailer:test avec --from
    Le test avec mailer:test en utilisant mon adresse mail et le --from=mon adresse mail fonctionne. Aucun message d'erreur

    Dernière question :
    En configuration finale, le site sera sur le serveur d'O2SWITCH.
    Donc l'envoi du mail se fera par un client avec son adresse sans lien avec celle du propriétaire.
    Est-ce que je serai quand même obligé de laisser le code avec le replyTo ou est-ce que je pourrai remettre mon code tel qu'il était donc sans le replyTo ?

    L'astuce replyTo fonctionne mais c'est vraiment bizarre d'être obligé de faire de telles manip.

  16. #16
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    C'est une excellente question qui touche au cœur de la délivrabilité moderne. La réponse courte est : Oui, vous devrez très probablement garder la logique du Reply-To, même sur les serveurs d'o2switch.

    Voici pourquoi ce n'est plus une question d'hébergeur, mais de "police du web" mondiale.

    Le problème n'est pas l'envoi, mais la réception, même si o2switch est beaucoup plus souple qu'Orange et vous autorise techniquement à mettre n'importe quoi dans le champ From, ce sont les serveurs qui reçoivent le mail (Gmail, Outlook, Yahoo, Orange) qui vont faire la grimace.

    Aujourd'hui, tous les grands services de messagerie utilisent des protocoles de vérification appelés SPF, DKIM et DMARC.

    SPF (Sender Policy Framework) : Quand un mail arrive chez Gmail avec l'étiquette From: client@gmail.com, Gmail regarde quel serveur l'a envoyé. S'il voit que c'est le serveur d'o2switch (et non celui de Google), il se dit : "C'est une tentative d'escroquerie !".

    Résultat : Le mail finit soit dans les spams, soit il est purement et simplement supprimé avant même d'arriver dans la boîte de votre ami.

    -La configuration idéale sur o2switch
    Pour que le site de chambres d'hôte soit professionnel et que les mails arrivent à 100%, la "bonne pratique" actuelle est la suivante :

    Créez une adresse dédiée sur o2switch (ex: reservation@domaine-chambre-hote.fr).

    Dans le .env de Symfony : Utilisez cette adresse et son mot de passe pour le MAILER_DSN.

    Dans votre code PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ->from('reservation@domaine-chambre-hote.fr') // C'est l'identité "légale" de votre serveur.
     
    ->to('votre-ami@orange.fr') // Le destinataire.
     
    ->replyTo($mailDuClient) // Pour qu'une réponse automatique aille au client.

    Pourquoi cela semble "absurde" ?
    Je comprends votre frustration. On est passé du "Web des pionniers" où l'on pouvait envoyer des mails en se faisant passer pour le Pape par simple jeu, à un Web hyper-verrouillé.

    C'est le prix à payer pour lutter contre le spam qui représente encore aujourd'hui plus de 45% du trafic mail mondial. En forçant le From à correspondre au domaine d'envoi, on s'assure que l'expéditeur est traçable.

    En résumé pour votre mise en production :
    Gardez votre code actuel avec le replyTo. C'est la seule méthode qui vous garantit que votre ami recevra bien les demandes de ses clients sans qu'elles ne se perdent dans les limbes du dossier "Courriers indésirables".

    Dites-vous que le champ From n'est plus là pour dire "qui a écrit le message", mais pour dire "quel serveur prend la responsabilité de cet envoi".

    C'est un beau projet cette chambre d'hôte ! Vous avez prévu d'intégrer un système de gestion de calendrier par la suite ?

  17. #17
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Je vais faire ce que vous suggérez
    Je vais prendre en compte ce que vous indiquez pour paramétrer l'envoi des mails via O2SWITCH.
    Cela semble assez simple et cela évitera à mon ami d'exposer sa vrai adresse mail, donc qu'il reçoive du spam ou des arnaques.
    Au reste, je n'ai pas connaissance qu'il se préoccupe d'une gestion de calendrier. Pourquoi me demandez-vous cela ?
    Vous avez peut-être une bonne suggestion dans ce domaine ?

    Bonne fin de journée.
    Bien cordialement

  18. #18
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Je vous pose la question parce que, dans l'univers des chambres d'hôte, le mail n'est souvent que la première étape.

    Dès que l'activité tourne un peu, le propriétaire se retrouve face à un défi : éviter les doubles réservations (le cauchemar de l'overbooking).

    Si votre ami commence à s'inscrire sur des plateformes comme Airbnb, Booking.com ou Abritel, il va vite s'épuiser à mettre à jour manuellement son calendrier partout.

    Voici quelques suggestions, de la plus "artisanale" à la plus complète, qui pourraient l'intéresser :

    1. L'option "Légère" : Le format iCal
    C'est le standard universel. Toutes les plateformes (Airbnb, Google Calendar, Booking) savent lire et exporter un flux .ics.

    Le principe : Vous développez une petite fonction en PHP qui génère un fichier texte au format iCal à partir de votre base de données.

    L'avantage : C'est du "code pur", sans dépendance lourde, et cela permet à votre ami de voir ses réservations directement sur son téléphone ou sur les plateformes de vente sans intervention manuelle.

    2. L'option "Visuelle" : FullCalendar
    Si votre ami souhaite voir ses réservations sous forme de grille mensuelle sur son interface d'administration Symfony :

    L'outil : FullCalendar est la référence. C'est une bibliothèque JavaScript très performante qui s'interface parfaitement avec une API Symfony (en JSON).

    L'avantage : C'est extrêmement ergonomique (drag & drop pour changer les dates) et cela donne un aspect très professionnel à l'outil de gestion que vous lui créez.

    3. L'option "Autonome" : Le Channel Manager
    Si l'activité devient sérieuse, il existe des solutions comme Beds24 ou Amenitiz.

    Le principe : Ce sont des outils payants qui centralisent tout.

    Mon avis : Pour un développeur qui aime garder le contrôle comme vous, c'est souvent moins satisfaisant, mais c'est une solution de tranquillité totale pour le propriétaire.

    Pourquoi lui en parler maintenant ?
    Anticiper la structure de la base de données (une table Booking avec une startDate, une endDate et un status) ne coûte rien au début du projet.
    Cela évite de devoir tout refactoriser dans six mois quand il vous dira : "C'est super les mails, mais j'ai deux clients qui arrivent le même jour pour la même chambre !"

    C'est une simple piste de réflexion pour "muscler" votre prestation, mais si son besoin s'arrête à un simple premier contact par mail, votre solution actuelle est déjà très bien.

    Pensez à marquer la discussion comme "Résolue" si tout est rentré dans l'ordre.

    Bonne suite !

  19. #19
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Encore un petit mot
    J'ai bien noté la manière de gérer le problème avec O2SWITCH en créant une boite mail sur l'hébergeur.
    Et donc :
    • le from = l'intitulé de cette boite mail O2SWITCH
    • le to = l'adresse mail de mon ami
    • le replyTo = le mail du client récupéré du formulaire du site de mon ami

    Reste un point.
    Pour le MAILER_DNS du fichier .ENV j'utilise les codes O2SWITCH avec encodage du @ et des éventuels caractères spéciaux du mot de passe O2SWITCH.
    Mais pour le mailer.yaml ... c'est toujours l'adresse de mon ami qui doit figurer 2 fois A)pour la rubrique mailer: B) pour la rubrique services: OK ?
    Et le messenger. yaml doit être vide afin de ne pas intervenir en empêchant l'envoi du mail en immédiat. OK ?

    Pour la gestion du calendrier, je ne pense pas qu'il en voudra un. Il n'a qu'une chambre d'hôte et dispose d'un widget Gites de France que j'ai
    intégré au site et qui permet à tout client de voir ce qui est disponible et à quelles dates

    Voilà, dès que j'ai votre réponse à la 1ère partie de ce mail, je le passe en résolu.
    Encore merci pour votre aide.
    Bien cordialement

  20. #20
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    C'est presque un sans-faute ! Il reste juste une petite précision cruciale à apporter sur le fichier mailer.yaml pour éviter de retomber sur une erreur de type "Émetteur invalide".

    Voici la validation point par point de votre configuration finale pour o2switch :

    1. Le fichier mailer.yaml (Attention !)
    C'est ici qu'il y a une petite confusion. Pour la partie A, l'adresse doit être celle de votre hébergeur (o2switch), pas celle de votre ami.

    • A) Rubrique envelope : Le sender est l'adresse technique qui "signe" l'envoi. Elle doit correspondre à votre compte o2switch pour que les serveurs (Gmail, Orange, etc.) acceptent le mail.
    • B) Rubrique services : Ici, c'est libre. C'est une simple variable PHP. Vous pouvez y mettre l'adresse de votre ami si vous l'utilisez dans votre code pour définir le destinataire (->to($adminEmail)).


    Exemple de config/packages/mailer.yaml :

    Code YAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    framework:
        mailer:
            dsn: '%env(MAILER_DSN)%'
            envelope:
                # ICI : L'adresse o2switch (le "tampon" officiel du serveur)
                sender: 'reservation@domaine-chambre-hote.fr'
     
    services:
        _defaults:
            bind:
                # ICI : L'adresse de votre ami (le destinataire final)
                $adminEmail: 'votre-ami@orange.fr'

    2. Le fichier .env (Confirmé)
    C'est correct. Utilisez bien les identifiants fournis par o2switch avec l'encodage URL (%40 pour le @, %21 pour le !, etc.).

    Astuce : Sur o2switch, le port est généralement le 465 avec ssl ou le 587 avec tls. Le serveur SMTP est souvent de la forme mail.votre-domaine.fr.

    3. Le fichier messenger.yaml (Confirmé)
    C'est correct. S'il ne contient aucune règle de routage pour le SendEmailMessage, Symfony enverra le mail de manière synchrone (immédiate). C'est parfait pour un site avec un faible volume de mails comme celui-ci.

    4. Le Widget Gîtes de France
    C'est une excellente solution. Pour une unité unique, le widget officiel de Gîtes de France est souvent imbattable car il gère déjà les paiements, les contrats et les assurances.
    Cela vous évite de développer une machine de guerre inutile alors qu'une solution "clés en main" existe déjà. Votre travail se concentre ainsi sur la mise en valeur du lieu, ce qui est le plus important.

    En résumé pour votre Controller :
    Votre logique est désormais blindée pour la mise en production :

    Connexion SMTP : Compte o2switch.

    Expéditeur (from) : Adresse o2switch.

    Destinataire (to) : Votre ami.

    Réponse (replyTo) : Le client.

    C'est la configuration pro par excellence. Une fois ces réglages appliqués, votre système de mail sera aussi solide que du code pur !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoi mail avec Symfony Mailer
    Par amelie_koo dans le forum Symfony
    Réponses: 2
    Dernier message: 10/02/2022, 08h23
  2. Réponses: 0
    Dernier message: 30/10/2020, 13h14
  3. Envoi de mail avec symfony
    Par Clazza dans le forum Symfony
    Réponses: 0
    Dernier message: 12/06/2020, 16h51
  4. [2.x] envoie mail avec symfony 2
    Par macksoft dans le forum Symfony
    Réponses: 5
    Dernier message: 05/12/2011, 14h12
  5. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo