Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 4/5] Envoi de mail par SwiftMailer

Problème de variables d'environnement

    22 mars 2020 à 17:16:11

    Bonjour,

    Je rencontre un problème lors d'envoi de mail avec SwiftMailer. La configuration suivante ne marche pas :

    #swiftmailer.yaml
    
    swiftmailer:
        url: '%env(MAILER_URL)%'
        spool: { type: 'memory' }
        stream_options:
            ssl:
                allow_self_signed: true
                verify_peer: false
                verify_peer_name: false
    # .env
    MAILER_URL=smtp://smtp.gmail.com:465?encryption=ssl&auth_mode=login&username=monGmail&password=monMdp

    En revanche, si j'écris en dur, dans swiftmailer.yaml, MAILER_URL, sans passer par la variable d'environnement ça marche très bien : 

    #swiftmailer.yaml
    
    swiftmailer:
        url: smtp://smtp.gmail.com:465?encryption=ssl&auth_mode=login&username=monGmail&password=monMdp
        spool: { type: 'memory' }
        stream_options:
            ssl:
                allow_self_signed: true
                verify_peer: false
                verify_peer_name: false

    Je ne sais pas s'il y a un problème de parse ou de typage lors de la lecture de la variable d’environnement, sachant que mon gmail et le mot de passe sont composés de caractères alphanumériques. Je précise que sans stream_options (tel qu'il est le cas dans la doc) ça ne fonctionne pas non plus.  Je précise également qu'aucune erreur n'est retournée.

    Si quelqu'un a une idée ça sera sympa :)

    -
    Edité par moumouC 22 mars 2020 à 17:17:43

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2020 à 17:45:46

      Salut

      As-tu encore tous les commentaires dans le fichier .env ? Parce que dans celui fourni avec Symfony 4 ou 5(website skeleton, je ne sais pas pour une application "plus basique") actuellement se trouve un exemple d'utilisation pour GMail, et ce n'est pas comme tu le fais actuellement.

      -
      Edité par Ymox 22 mars 2020 à 17:47:44

      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2020 à 18:51:23

        Ymox a écrit:

        Salut

        As-tu encore tous les commentaires dans le fichier .env ? Parce que dans celui fourni avec Symfony 4 ou 5(website skeleton, je ne sais pas pour une application "plus basique") actuellement se trouve un exemple d'utilisation pour GMail, et ce n'est pas comme tu le fais actuellement.

        Merci pour ta réponse.

        Oui. Voici mon .env :

        ###> symfony/swiftmailer-bundle ###
        # For Gmail as a transport, use: "gmail://username:password@localhost"
        # For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
        # Delivery is disabled by default via "null://localhost"
        MAILER_URL=smtp://smtp.gmail.com:465?encryption=ssl&auth_mode=login&username=monGmail&password=monMdp
        ###< symfony/swiftmailer-bundle ###

        Je suis sous Symfony 5, une application Skeleton.La config dépend SwiftMailer. C'est celle que j'ai mis au dessus. 

        Je pense que le problème ne vient pas du fichier .env mais du fait que swiftmailer.yaml ne récupère pas correctement la variable MAILER_URL.

        ...La question est pourquoi?

        -
        Edité par moumouC 22 mars 2020 à 18:53:38

        • Partager sur Facebook
        • Partager sur Twitter
          23 mars 2020 à 9:01:46

          Parce que SwiftMailer n'est normalement plus fourni avec Symfony 4.4 et 5, ça a été remplacé par le mailer de Symfony. Même si là, d'après le bloc de configuration, il est cependant présent.

          Tu as bien vu qu'il y avait un exemple dans ce que tu cites pour GMail ? J'ose demander pourquoi tu ne fais pas comme dans l'exemple ?

          -
          Edité par Ymox 23 mars 2020 à 9:03:33

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            23 mars 2020 à 14:43:55

            Salut,

            Pour le cas de connexion à Gmail


            Je cherche depuis des heures alors que l'envoi de mail fonctionne en local mais pas sur ovh.

            Merci à ce post pour la solution :

            https://stackoverflow.com/questions/50916103/symfony-swiftmailer-gmail-not-working-on-remote-server

            Il faut activer une autorisation de google le lien qui se trouve dans le post-ci dessus :

            https://accounts.google.com/DisplayUnlockCaptcha

            Une fois activé tout marche.

            Pour info :

            Mon fichier swiftmailer.yaml est celui de base :

            swiftmailer:
                url: '%env(MAILER_URL)%'
                spool: { type: 'memory' }
            

            mon fichier .env :

            MAILER_URL=gmail://username or mail:password@localhost
            




            • Partager sur Facebook
            • Partager sur Twitter
              23 mars 2020 à 18:01:53

              @Ymox

              Ladoc que j'ai suivi est celle sur Symfony 5. Donc il peut bien être intégré. Cependant, l'exemple donné pour Gmail ne fonctionne pas, c'est pour ça j'ai utilisé l'autre. 

              @tonius85

              J'ai fait la configuration nécessaire côté Gmail. D'ailleurs ça fonction bien si je ne passe pas par la variable d'environnement. 

              Le problème quand je fais comme toi pour le swiftmailer.yaml ça ne fonctionne pas, puisque la '%env(MAILER_URL)%'

               ne peut pas être lu ou mal lu...d'où mon problème !

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                24 mars 2020 à 10:29:21

                Alors la c'est étrange en effet.

                Je tourne aussi sur symfony 5 pourtant. Je ne sais pas désolé mais je te proposes de vérifier cela, peut-être que tu l'as déjà fait :

                1. Si ton problème survient sur l'environnement de dev. Dans config/packages/dev/ il y a un autre swiftmailer.yaml spécifique au dev. Perso le mien est vide peut etre que tu as des choses dedans ?

                2. Mettre a jour avec composer update

                3. Supprime le cache

                4. Vérifie qu'il y est bien 4 espaces de décalage (d'indentation) dans ton swiftmailer :

                swiftmailer:
                    url: '%env(MAILER_URL)%'
                    spool: { type: 'memory' }



                -
                Edité par Anonyme 24 mars 2020 à 10:57:54

                • Partager sur Facebook
                • Partager sur Twitter
                  30 mars 2020 à 19:23:04

                  @tonius85 Oui, je travail en dev. J'ai essayé de mettre la conf dans le fichier qui se trouve dans config/packages/dev/ mais ça ne donne rien. 

                  Merci quand même.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  [Symfony 4/5] Envoi de mail par SwiftMailer

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown