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 :

Monolog : serveur smtp personnalisé [2.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Monolog : serveur smtp personnalisé
    Bonjour à toutes et à tous,

    Dans mon application Symfony2, j'utilise le gestionnaire de logs Monolog.
    Je reçois régulièrement des emails lorsqu'une erreur critique est générée sur mon site. Jusque là, pas d'embrouille.

    Pour l'envoi des mails dans mon application, j'utilise le service MailJet ( http://www.mailjet.com )
    J'envois tous les mails via ce service. C'est là que se situe mon problème : j'aimerais avoir un serveur SMTP pour l'envoi des mails de log (par exemple, gmail),
    et un autre serveur d'envoi pour tous les autres mails du site (MailJet => pour l'inscription d'un nouvel utilisateur, etc...).

    ------------------------------------

    Je ne maitrise pas encore suffisament la mécanique de Symfony2 pour pouvoir configurer tout ça
    Je ne demande pas de "travail tout fait" car j'aime à travailler par moi même, mais pourriez-vous me mettre sur une piste (voir plusieurs ) pour arriver à un tel résultat ? Car Google n'a pas su me donner de réponse, ou plutôt je n'arrive pas à lui poser la bonne question... Merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Dans un premier temps tu as besoin de configurer deux instances du swiftmailer:
    ça se trouve ici (pas encore traduit en français apparemment)
    http://symfony.com/doc/current/refer...ltiple-mailers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    # app/config/config.yml
    #...
    swiftmailer:
        default_mailer: mailer
        mailers:
            mailer:
    # ici la config par défaut de Symfony
                 transport: %mailer_transport%
                 host:      %mailer_host%
                 username:  %mailer_user%
                 password:  %mailer_password%
                 port: %mailer_port%
                 encryption: %mailer_encryption%
            log_mailer:
                 transport: smtp
                 host:  smtp.toto.truc
                 username:  moi_meme
                 password:  1234
    # etc..., evidemment il faut plutôt déclarer des paramètres dans parameters.yml et y faire référence ici
    #...


    Pour l'envoi d'email via le logger, je suppose que tu t'es inspiré de ceci:
    http://symfony.com/fr/doc/current/co...log_email.html

    Ce qu'il faudrait c'est juste que le log Handler utilise "log_mailer" plutot que "mail" comme service de messagerie.
    Cela a été ajouté via ce commit:
    https://github.com/symfony/MonologBu...349915d490d9d6

    A priori, on peut le tenter comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # app/config/config.yml
    monolog:
        handlers:
            mail:
                type:         fingers_crossed
                action_level: critical
                handler:      buffered
            buffered:
                type:    buffer
                handler: swift
            swift:
                type:       swift_mailer
                from_email: error@example.com
                to_email:   error@example.com
                subject:    An Error Occurred!
                level:      debug
               mailer: log_mailer # référence à notre service "log_mailer" donc

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci, c'est exactement ce que je recherchais

    Par contre, malgré cette configuration, j'ai l'erreur suivante qui persiste :

    ServiceNotFoundException: The service "monolog.handler.swift" has a dependency on a non-existent service "log_mailer".
    Pourtant, la configuration de swiftmailer est placée plus haut dans le code que la configuration de monolog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    # Swiftmailer Configuration
    swiftmailer:
        default_mailer: mailer
        mailers:
            # Mailer pour l'envoi de tous les mails du site (sauf logs/admin)
            mailer:
                transport:  %mailer_transport%
                auth_mode:  %mailer_auth_mode%
                host:       %mailer_host%
                username:   %mailer_user%
                password:   %mailer_password%
                port:       %mailer_port%
                encryption: %mailer_encryption%
            # Mailer pour l'envoi des logs et des mails ADMIN
            log_mailer:
                transport:  %mailer_transport%
                auth_mode:  %mailer_auth_mode%
                host:       %mailer_ovh_host%
                username:   %mailer_ovh_user%
                password:   %mailer_ovh_password%
                port:       %mailer_ovh_port%
                encryption: %mailer_ovh_encryption%
     
    # MONOLOG
    # http://symfony.com/fr/doc/current/cookbook/logging/monolog_email.html
    monolog:
        handlers:
            main:
                type:         fingers_crossed
                action_level: critical
                handler:      buffered
            buffered:
                type:    buffer
                handler: swift
                #Formatter pour affichage de l'URL courante dans le mail envoyé
                #formatter:    monolog.formatter.log_URL
            swift:
                type:       swift_mailer
                from_email: %mail_admin%
                to_email:   %mail_admin%
                subject:    An Error Occurred
                level:      debug
                mailer:     log_mailer
    Chose encore plus bizarre : si je ne définit pas "mailer", mais que je nomme "mailer" dans monolog, l'erreur n'apparait plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    # Swiftmailer Configuration
    swiftmailer:
        default_mailer: log_mailer
        mailers:
            # Mailer pour l'envoi de tous les mails du site (sauf logs/admin)
            # mailer:
               # transport:  %mailer_transport%
               # auth_mode:  %mailer_auth_mode%
               # host:       %mailer_host%
               #username:   %mailer_user%
               # password:   %mailer_password%
               # port:       %mailer_port%
               # encryption: %mailer_encryption%
            # Mailer pour l'envoi des logs et des mails ADMIN
            log_mailer:
                transport:  %mailer_transport%
                auth_mode:  %mailer_auth_mode%
                host:       %mailer_ovh_host%
                username:   %mailer_ovh_user%
                password:   %mailer_ovh_password%
                port:       %mailer_ovh_port%
                encryption: %mailer_ovh_encryption%
     
    # MONOLOG
    # http://symfony.com/fr/doc/current/cookbook/logging/monolog_email.html
    monolog:
        handlers:
            main:
                type:         fingers_crossed
                action_level: critical
                handler:      buffered
            buffered:
                type:    buffer
                handler: swift
                #Formatter pour affichage de l'URL courante dans le mail envoyé
                #formatter:    monolog.formatter.log_URL
            swift:
                type:       swift_mailer
                from_email: %mail_admin%
                to_email:   %mail_admin%
                subject:    An Error Occurred
                level:      debug
                mailer:     mailer
    Comme si "mailer" était le seul mailer configurable pour monolog

    EDIT : j'ai pourtant bien la version 2.6 de monolog... bizarre...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    ServiceNotFoundException: The service "monolog.handler.swift" has a dependency on a non-existent service "log_mailer".
    Que donne la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    app/console container:debug
    Vois tu tes services "mailer" et "log_mailer" ?

    Quelques pistes:
    - Problème de cache ?
    - la config swiftmailer est redéfinie dans config_dev.yml et/ou config_prod.yml ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par arnooo999 Voir le message
    Vois tu tes services "mailer" et "log_mailer" ?
    oui je les vois !

    En fait j'ai mal nommé le service à appeler, il faut remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    monolog:
        handlers:
            ...
            swift:
                mailer:             log_mailer
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    monolog:
        handlers:
            ...
            swift:
                mailer:             swiftmailer.mailer.log_mailer
    Merci beaucoup pour votre aide, arnooo999 !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Excusez-moi de remonter ce topic de Juin,
    mais j'ai un problème avec cette configuration :
    FosUserBundle semble ne pas pouvoir envoyer d'email de cette manière
    (j'utilise le mailer par défaut de mon application).

    Dans le profiler,
    lors d'une inscription ou d'une récupération de mot de passe,
    je vois bien que le mail est parti, mais je ne reçois rien...

    Mailer Messages
    admin_mailer 0 sent
    default (default mailer) 1 sent
    mailer 0 sent

    --------------------------------

    Lorsque j'utilise le mailer directement via un controleur,
    le mail part correctement, et je reçois bien un email :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            $message = \Swift_Message::newInstance()
                    ->setSubject('Test envoi mail')
                    ->setFrom('adresse@gmail.com')
                    ->setTo('adresse@gmail.com')
                    ->setBody('ok', 'text/html')
            ;
            $this->get('swiftmailer.mailer.mailer')->send($message);
    Résultat :

    Mailer Messages
    admin_mailer 0 sent
    default (default mailer) 0 sent
    mailer 1 sent

    --------------------------------

    Cependant, si j'appelle le mailer par défaut, cette fois ci je ne reçois aucun mail (comme pour FOSUserBundle) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            $message = \Swift_Message::newInstance()
                    ->setSubject('Test envoi mail')
                    ->setFrom('adresse@gmail.com')
                    ->setTo('adresse@gmail.com')
                    ->setBody('ok', 'text/html')
            ;
            $this->get('mailer')->send($message);
    Résultat :


    Mailer Messages
    admin_mailer 0 sent
    default (default mailer) 1 sent
    mailer 0 sent

    --------------------------------

    Auriez-vous une idée du pourquoi je ne reçois aucun mail lorsque j'utilise le mailer "par défaut" ?
    J'ai pourtant bien spécifié le mailer par défaut dans config.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # Swiftmailer Configuration
    swiftmailer:
        default_mailer: mailer

    Merci pour votre aide

    EDIT : résolu, apparemment je suis obligé d'appeler le mailer "default" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Swiftmailer Configuration
    swiftmailer:
        default_mailer: default
        mailers:
            default:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment tester serveur SMTP
    Par hoangeric dans le forum IIS
    Réponses: 8
    Dernier message: 31/12/2007, 13h33
  2. serveur smtp
    Par Arnich dans le forum Réseau/Web
    Réponses: 9
    Dernier message: 05/12/2005, 10h25
  3. [C++] Probleme de connexion socket client à mon serveur smtp
    Par matthieu5978 dans le forum Développement
    Réponses: 2
    Dernier message: 04/12/2005, 08h19
  4. Serveur SMTP
    Par LordBob dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 26/09/2005, 18h11
  5. Programmation d'un serveur SMTP en C
    Par mehdi1510 dans le forum Développement
    Réponses: 9
    Dernier message: 20/02/2004, 14h48

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