Frage

Vorausgesetzt, dass ich die Mail Dateinamen und den Server, wie rufe ich die vollständig qualifizierten Namen des Benutzers es entspricht in der Form „CN = xxx / O = yyy“ LotusScript- mit?

Zu Beginn, ich habe den Benutzernamen des Benutzers - den Teil vor @ in der E-Mail: das heißt user1@example.com

Ich weiß auch, Server, auf dem dieser Benutzer registriert ist, so dass ich Registration.GetUserInfo wie folgt verwenden:

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

Die Frage ist: Wie aus diesen Daten ich den vollständigen Namen des Benutzers erhalten kann

War es hilfreich?

Lösung 4

ich mit dieser Lösung endete (wie ich weiß, was der Addressbook-Server für den Benutzer ist):

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

Dim namelist As Variant

namelist = Evaluate ( macro$ )

commonName = namelist(0)

Andere Tipps

Hier ist eine schnelle Umsetzung von Jonesys Vorschlag:

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

Ein paar Worte der Warnung:

  • CANONICALIZE nimmt seine Werte aus der aktuellen ID, nicht das Domino-Verzeichnis -. Der Eingang mailserver entweder abgekürzt oder kanonisierten Form an der Arbeit für diese wird in muss
  • Die MailFile Feld kann oder nicht sind die .nsf Erweiterung.
  • Ich glaube nicht, die Dateinamen Groß- und Kleinschreibung unter Windows ist, aber es könnte auf anderen Plattformen sein.

Wenn Sie diese Lookups häufig tun müssen, eine berechnete Lookup-Tabelle oder eine Ansicht im Domino-Verzeichnis ist wahrscheinlich die effizienteste Lösung.

Wenn Sie die Mail-Dateinamen haben, warum nicht einen Nachschlag in die NAB tun mit, dass als Schlüssel und bekommen den vollen Namen auf diese Weise?

Wenn Sie die Internet-Adresse haben, können Sie einfach die notesname-Klasse verwenden.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top