Question

Pourvu que j'ai le nom du fichier de messagerie et le serveur, comment puis-je récupérer le nom complet de l'utilisateur correspond à la forme « CN = xxx / O = yyy » en utilisant LotusScript?

Pour commencer, j'ai le nom d'utilisateur de l'utilisateur - la partie avant @ dans l'e-mail: à savoir user1@example.com

Je sais aussi serveur, sur lequel cet utilisateur est enregistré, donc j'utilise Registration.GetUserInfo comme ceci:

Dim reg as New NotesRegistration
reg.RegistrationServer = "CN=myserver/O=mydomain"
Call reg.GetUserInfo("user1", mailserver$, mailfile$)

La question est: comment sortir de ces données que je peux obtenir le nom complet de l'utilisateur

?
Était-ce utile?

La solution 4

J'ai fini avec cette solution (comme je sais qui est le serveur AddressBook pour l'utilisateur):

macro$ = { @DbLookup( "" ; "} & regServer & _
         {" : "names.nsf" ; "($Users)" ; "} & shortName & {" ; "FullName" ) }

Dim namelist As Variant

namelist = Evaluate ( macro$ )

commonName = namelist(0)

Autres conseils

Voici une mise en œuvre rapide de la suggestion Jonesys:

Function getMailFileUser(mailserver As String, mailfile As String) As String
    On Error Goto errorthrower  
    Dim session As New notessession

    Dim dd As NotesDatabase
    Forall candidate_dd In session.AddressBooks
        If candidate_dd.Server<>"" And candidate_dd.IsPublicAddressBook Then
            Set dd = candidate_dd
            Exit Forall
        End If
    End Forall 
    If dd Is Nothing Then Error 1978,"Failed to find Domino Directory"
    If Not dd.IsOpen Then Call dd.Open("","")


    Dim userdocs As NotesDocumentCollection
    Set userdocs = dd.Search({form="Person" & }& _
    {@name([CANONICALIZE];MailServer)=@name([CANONICALIZE];"} & mailserver & {") & } &_
    {MailFile="} & mailfile & {"},Nothing,1)

    Dim userdoc As NotesDocument
    Set userdoc = userdocs.GetFirstDocument
    If Not userdoc Is Nothing Then
        getMailFileUser = userdoc.FullName(0)       
    Else
        getMailFileUser=""
    End If

    Exit Function
ErrorThrower:
    Error Err, Error & Chr(13) + "Module: " & Cstr( Getthreadinfo(1) ) & ", Line: " & Cstr( Erl )
End Function

Quelques mots de prudence:

  • CANONICALIZE prend ses valeurs de l'ID en cours, pas le répertoire domino -. L'mailserver d'entrée doit être sous forme abrégée ou canonisé pour que cela fonctionne
  • Le champ MailFile ou non inclure l'extension de .nsf.
  • Je ne pense pas que le nom de fichier est sensible à la casse sous Windows, mais il pourrait être sur d'autres plates-formes.

Si vous devez faire ces recherches souvent, une table de consultation calculée ou une vue dans l'annuaire Domino est probablement la solution la plus efficace.

Si vous avez le nom de fichier courrier, pourquoi ne pas faire une recherche dans le NAB à l'aide que votre clé et obtenir le nom complet de cette façon?

Si vous avez l'adresse internet que vous pouvez simplement utiliser la classe notesname.

Dim s As New NotesSession
Dim userName As NotesName
Dim canonicalName as String

Set userName = s.CreateName("user@yourdomain.com")
'You can use the previous line or the next line to get the NotesName object
'Set userName = new NotesName("user@yourdomain.com")

canonicalName = userName.Canonical
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top