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

VB 6 et antérieur Discussion :

Envoi de mail avec Lotus Notes depuis VB


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut Envoi de mail avec Lotus Notes depuis VB
    Bonjour.

    Dans une application VB6, j'utilise le code de la FAQ pour envoyer des mails avec Lotus Notes.
    L'initialisation de session ne fonctionne qu'avec les versions 5.x et supérieures.
    Or je dois pouvoir utiliser mon code avec les versions antérieures. En supprimant l'initialisation de session, cela fonctionne avec les versions inférieures mais pas les autres.

    D'où mon problème : Comment identifier la version de Lotus Notes installée sur le poste pour pouvoir appeler le code correspondant ?

    Merci de votre aide.

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Du fait que les versions soient différentes, les propriétés et méthodes de chaque object Notes sont susceptibles d'être différentes, mais je pense que c'est plutôt au niveau du référencement que cela échoue.
    Par exemple, avec la version 5, cela s'initialise comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oSess = CreateObject("Notes.NotesSession")
    et dans la version 4, c'est peut-être différent...

    Perso, je n'ai plus le souvenir des méthodes pour le version 4 mais je sais que la 5 et la 6 sont exploitables avec le code que tu as du copié.
    Bref, pour connaître la version d'une application tu peux utiliser les Api GetFileVersionInfoSize() et GetFileVersionInfoSize().
    Je te conseille toutefois d'avoir un autre poste de dev un VB6 et la version antérieure de Lotus Notes que tu références comme objet et tu possèderas grâce à l'initellisense les bonnes méthodes.
    Tu pourras alors faire un Select Case NotesVersionselon la version et appliquer le bon code.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Tout d'abord, merci de ton aide.

    Plusieurs points à éclaircir :
    Du fait que les versions soient différentes, les propriétés et méthodes de chaque object Notes sont susceptibles d'être différentes
    Je le sais bien et j'ai réussi à avoir un code qui fonctionne pour les versions 5 et plus d'un côté, et pour les versions 4 et moins d'un autre côté.

    Maintenant, je cherche à regrouper ces codes pour éviter d'avoir à créer une version du produit selon les versions de notes ...
    pour connaître la version d'une application tu peux utiliser les Api GetFileVersionInfoSize() et GetFileVersionInfo()
    C'est très intéressant ça. D'après la MSDN j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        lTmpSize = GetFileVersionInfoSize("C:\APPS\Notes\notes.exe", 0)
        GetFileVersionInfo "C:\APPS\Notes\notes.exe", 0, lTmpSize, strTemp
        MsgBox strTemp
    avec les API déclarées comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Declare Function GetFileVersionInfo Lib "version.dll" (strFileName As String, lReserved As Long, lSize As Long, strVersionInfo As String) As Long
    Public Declare Function GetFileVersionInfoSize Lib "version.dll" (strFileName As String, lReserved As Long) As Long
    Mais j'obtient le message suivant :
    Erreur d'exécution 453 : Point d'entrée GetFileVersionInfoSize d'une DLL introuvable dans version.dll
    Une idée d'où ça peut venir ?

    Merci encore

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Ton erreur vient de l'Alias qui a été omis. Voici comment tu dois les déclarer avec le code complet...
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Private Type VS_FIXEDFILEINFO
       dwSignature As Long
       dwStrucVersionl As Integer
       dwStrucVersionh As Integer
       dwFileVersionMSl As Integer
       dwFileVersionMSh As Integer
       dwFileVersionLSl As Integer
       dwFileVersionLSh As Integer
       dwProductVersionMSl As Integer
       dwProductVersionMSh As Integer
       dwProductVersionLSl As Integer
       dwProductVersionLSh As Integer
       dwFileFlagsMask As Long
       dwFileFlags As Long
       dwFileOS As Long
       dwFileType As Long
       dwFileSubtype As Long
       dwFileDateMS As Long
       dwFileDateLS As Long
    End Type
     
    Private Declare Function GetFileVersionInfo Lib "Version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) As Long
    Private Declare Function GetFileVersionInfoSize Lib "Version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
    Private Declare Function VerQueryValue Lib "Version.dll" Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) As Long
    Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, ByVal Source As Long, ByVal length As Long)
     
     
     
    Private Function ShowMeExecInfo(ByVal ExecFilename As String) As String
    Dim strFileStructureVersion As String
    Dim strFileVersion As String
    Dim strProductVersion As String
     
    Dim strInfos As String
     
    Dim lngReturns As Long
    Dim lngDummy As Long
    Dim strBuffer() As Byte
    Dim lngBufferLen As Long
    Dim lVerPointer As Long
    Dim udtVerBuffer As VS_FIXEDFILEINFO
    Dim lVerbufferLen As Long
     
      lngBufferLen = GetFileVersionInfoSize(ExecFilename, lngDummy)
      If lngBufferLen < 1 Then
        ShowMeExecInfo = "Aucune information sur le fichier n'est disponible!"
        Exit Function
      End If
      ReDim strBuffer(lngBufferLen)
      lngReturns = GetFileVersionInfo(ExecFilename, 0&, lngBufferLen, strBuffer(0))
      lngReturns = VerQueryValue(strBuffer(0), "\", lVerPointer, lVerbufferLen)
      MoveMemory udtVerBuffer, lVerPointer, Len(udtVerBuffer)
      strFileStructureVersion = Format$(udtVerBuffer.dwStrucVersionh) & "." & Format$(udtVerBuffer.dwStrucVersionl)
     
      strFileVersion = Format$(udtVerBuffer.dwFileVersionMSh) & "." & Format$(udtVerBuffer.dwFileVersionMSl) & "." & Format$(udtVerBuffer.dwFileVersionLSh) & "." & Format$(udtVerBuffer.dwFileVersionLSl)
      strProductVersion = Format$(udtVerBuffer.dwProductVersionMSh) & "." & Format$(udtVerBuffer.dwProductVersionMSl) & "." & Format$(udtVerBuffer.dwProductVersionLSh) & "." & Format$(udtVerBuffer.dwProductVersionLSl)
     
      strInfos = "Exécutable: " + ExecFilename
      strInfos = strInfos & vbCrLf & "Version de l'exécutable: " + strFileVersion
      strInfos = strInfos & vbCrLf & "Version du produit: " + strProductVersion
      ShowMeExecInfo = strInfos
    End Function
    Private Sub GetVersionExe()
    Dim strFilename As String
    Dim strFileInfos As String
     
        strFilename = "C:\Program Files\Microsoft Office\Office\Winword.exe"
        strFileInfos = ShowMeExecInfo(strFilename)
        Debug.Print strFileInfos
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup ce code fonctionne.

    Bon j'ai encore un souci, j'obtiens Aucune information n'est disponible, mais je pense que je vais chercher à partir de ce code.

    Je reviendrai ici si je ne trouve pas de solution ... Si j'en trouve une aussi d'ailleurs.

    Encore merci.

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Mouais,

    Y sont dur chez Lotus, à croire que les affinités avec MS sont minces
    Bon je n'ai que la version R5 mais ce code m'a donné quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub GetVersionExe()
    Dim strFilename As String
    Dim strFileInfos As String
     
        strFilename = "F:\Program Files\LotusNotes\nnotesws.dll"
        strFileInfos = ShowMeExecInfo(strFilename)
        Debug.Print strFileInfos
    End Sub
    A savoir:
    • Exécutable: F:\Program Files\LotusNotes\nnotesws.dll
      Version de l'exécutable: 4.0.0.0
      Version du produit: 4.0.0.0

    A mon avis, il faut piocher sur une DLL mais laquelle ?
    Je te laisse le soin de trouver...
    A toi de comparer cette "nnotesws.dll" de la version 4 puis 6 si elle existe...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Bon alors j'ai essayé avec la dll nnotesws.dll et j'obtiens
    Exécutable: C:\APPS\Notes\nnotesws.dll
    Version de l'exécutable: 4.0.0.0
    Version du produit: 4.0.0.0
    J'ai la version 4.6, maintenant reste à voir ce que ça donne pour la version 6.
    Je vais essayer de trouver un poste équipé avec cette version mais ça va pas être évident
    Je vous tiendrai informé de mes progrès ...
    Merci beaucoup pour votre aide.

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Voilà les résultats de mes dernières recherches.
    J'ai essayé sur un poste équipé de la version 6 et aucune des DLL ne donne un résultat différent de "Aucune information n'est disponible".

    J'ai parcouru la base de registre à la recherche d'une clé pouvant contenir une information sur la version mais je n'ai rien trouvé de probant : certaines clés contiennent la mention "Notes R4.0" sur mon poste mais pas sur d'autres équipés de la même version, alors que j'ai retrouvé cette mention dans la base de registre d'un poste équipé de la version 6.0.3

    D'autre part, le code qui fonctionne pour la version 4.6.6 fonctionne également pour la version 5.0.11
    Par contre, j'ai un problème avec le code tiré de la FAQ pour le faire fonctionner avec la version 6. L'instruction "Session.Initialize (Password)" provoque l'erreur 438 : l'objet ne gère pas cette propriété ou cette méthode.

    Je craque !!!

    Merci de votre aide et de votre patience ...

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Bonjour.

    Mes recherches ont donné ceci :
    L'objet Session de Lotus Notes a une propiété qui comprend le numéro de version pour ceux que ça intéresse, c'est une chaîne de la forme :
    Edition France 4.6.6b |18 Novembre 1999
    Pour l'obtenir, il faut utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set Session = CreateObject("Notes.NotesSession")
        MsgBox Session.NotesVersion
    Donc pour identifier la version de Notes, c'est bon.
    Il me reste à régler le problème du code de la FAQ que je n'arrive pas à faire fonctionner :
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session.Initialize (MotDePasse)
    provoque une erreur propriété ou méthode non gérée.
    Si j'omet cette ligne, j'ai une erreur Notes (Vous n'êtes pas autorisé à effectuer cette opération) lors de l'ajout de la pièce jointe.

    Que dois-je faire ?

    Merci de votre aide

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Bon j'ai trouvé.

    J'ai réglé le problème en supprimant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session.initialize(MotDePasse)
    mais en conservant la partie concernant le nom de la base des mails (ça fonctionnait sans pour la version 4.6)
    Comme ça, ça fonctionne pour toutes les versions.

    Merci pour votre aide, le sujet est résolu.

    Cordialement,

    Mathieu Driesbach.
    Un verre vide se plaint, un verre plein se vide ...

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

Discussions similaires

  1. programmé un envoi de mail avec lotus notes
    Par bomonde dans le forum Exchange Server
    Réponses: 0
    Dernier message: 22/11/2012, 11h09
  2. Envoi de mail avec Lotus Notes 8.5
    Par pironjulien dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/09/2012, 18h20
  3. Réponses: 1
    Dernier message: 27/06/2012, 00h43
  4. Envoi mail avec lotus notes 6.5
    Par ade94 dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/06/2007, 11h52
  5. Réponses: 2
    Dernier message: 21/11/2006, 11h08

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