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

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2011
    Messages : 2
    Points : 4
    Points
    4

    Par défaut sp_send_dbmail : email ne partant pas

    Bonjour,

    J'essaye d'utiliser la procédure stockée sp_send_dbmail dans un trigger et je rencontre un problème : aucun mail ne part lorsque le trigger se déclenche.

    Résultat :

    - Table sysmail_allitems : sent_statut du mail = failed

    - Table des logs : "Le message n'a pas pu être envoyé aux destinataires en raison d'une erreur du serveur de messagerie. (Envoi des messages électroniques en utilisant le compte 3 (2018-09-02T15:07:31). Message d'exception : Impossible d'envoyer des messages à ce serveur de messagerie. (Échec d'envoi du courrier.). )"

    J'ai suivi les précos de paramétrage MS : https://docs.microsoft.com/fr-fr/sql...stemParameters

    J'ai donc fait plusieurs tests d'envoi sans succès : (sur mon poste en local)

    1 - Utilisation de la procédure sp_send_dbmail seule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXEC msdb.dbo.sp_send_dbmail  
        @profile_name = 'Nom de mon profil créé',  
        @recipients = 'Mon e-mail',  
        @body = 'Corps Mail Test',  
        @subject = 'Sujet Mail Test' ;
    2 - Changer de mail avec un compte gmail en SSL & port 465

    3 - Autoriser l'application C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\DatabaseMail.exe dans le firewall en flux sortant

    4 - Désactiver le firewall (Windows)

    Le message d'erreur ne change pas.

    Ma dernière piste me mène vers un potentiel problème de droit SQL. Quand je regarde la table de logs sysmail_event_log je vois que le champs last_mod_user = "sa". Quand je vais dans "les propriétés de de sa"\"mappages de l'utilisateurs"\"table msdb"\"Appartenance au rôle de base de données"\"DatabaseMailUserRole" est décoché.

    Est-ce que cela peux jouer ?

    Si oui, comment attribue t on à "sa" ce role ? Quand je le fais, j'ai l'erreur "Impossible d'utiliser le principal spécial « sa ». (Microsoft SQL Server, Erreur : 15405)". Après recherche et tentatives de correction, je bloque sur ce dernier point et de manière générale.

    Je veux bien des conseils car je tourne en rond depuis longtemps sur ce sujet , merci beaucoup !

  2. #2
    Membre expert Avatar de 7gyY9w1ZY6ySRgPeaefZ
    Homme Profil pro
    dba
    Inscrit en
    juillet 2007
    Messages
    4 321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : juillet 2007
    Messages : 4 321
    Points : 3 944
    Points
    3 944

    Par défaut

    Est-ce qu'un envoie par défaut fonctionne ? Sinon, c'est un problème de configuration ou du smtp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    -- ENVOIE D'UN MESSAGE COURRIEL DE TEST
    DECLARE @Subject_message nvarchar(2500) , @Body_message nvarchar(250)
    set @Body_message = '['+@@servername+'].['+db_name()+'] ' + CONVERT(char(23),getdate(), 121) + ' @ ' + SYSTEM_USER
    set @Subject_message = '[TEST] ' + @Body_message
     
    EXEC msdb.dbo.sp_send_dbmail
    	@recipients = 'monadress@machin.com' ,
    	@subject = @Subject_message ,
    	@body = @Body_message
    Sinon, c'est au niveau des droits que ça peut aussi coincer, effectivement.
    Le trigger se déclenche avec les droits de l'usager qui le lance, donc s'il n'a pas les droits, ça ne part pas.

    Par expérience, l'envoi de courriel dans un trigger est un bon moyen d'inonder les destinataires !
    Je préfère avoir une job qui tourne au 5 minutes (ou plus) qui gère ça et qui vérifie si il y a déjà des messages correspondant qui sont partis, pour éviter d'en envoyer 30 par heure.
    Et en cas de pb, c'est bien moins inoffensif à désactiver une job qu'un trigger...

    Qu'Est-ce qu'il y a dans ces tables ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM msdb.dbo.sysmail_faileditems
    SELECT * FROM msdb.dbo.sysmail_unsentitems

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

Discussions similaires

  1. comment faire certifier un email en pop3 (pas imap)
    Par clavier12AZQSWX dans le forum Droit du travail
    Réponses: 5
    Dernier message: 08/05/2009, 01h10
  2. sendmail les emails ne partent pas
    Par bnoir dans le forum Administration système
    Réponses: 4
    Dernier message: 14/03/2009, 11h28
  3. certains emails ne sont pas achemines (OVH)
    Par redah75 dans le forum Réseau
    Réponses: 2
    Dernier message: 17/10/2008, 19h33
  4. Réponses: 1
    Dernier message: 24/04/2008, 18h43
  5. [Mail] email ne reprenant pas la case coché d'un bouton radio
    Par zazapirouette dans le forum Débuter
    Réponses: 25
    Dernier message: 23/05/2007, 17h30

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