Pregunta

Siempre que tengo el nombre de archivo de correo y el servidor, ¿cómo puedo recuperar el nombre completo del usuario que corresponde a la forma "CN = xxx / S = yyy" utilizando LotusScript?

Para empezar, tengo el nombre del usuario - la parte anterior a @ en el correo electrónico: es decir, user1@example.com

también sé servidor, en el que se ha registrado este usuario, por lo que utilizar Registration.GetUserInfo como esto:

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

La pregunta es: ¿cómo salir de estos datos puedo obtener el nombre y apellidos del usuario

?
¿Fue útil?

Solución 4

terminé con esta solución (que yo sepa que es el servidor de la libreta de direcciones para el usuario):

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

Dim namelist As Variant

namelist = Evaluate ( macro$ )

commonName = namelist(0)

Otros consejos

Aquí hay una rápida implementación de Jonesys sugerencia:

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

Algunas palabras de precaución:

  • CANONICALIZE recoge sus valores de la ID actual, no el Directorio de Domino -. La mailserver de entrada debe estar en forma abreviada o canónica para que esto funcione
  • El campo MailFile pueden o no incluir la extensión .nsf.
  • No creo que el nombre del archivo es sensible a mayúsculas en Windows, pero podría ser en otras plataformas.

Si lo que necesita hacer estas búsquedas con frecuencia, una tabla de búsqueda computarizada o una vista en el Directorio de Domino es probablemente la solución más eficiente.

Si usted tiene el nombre de archivo de correo, por qué no hacer una búsqueda en el NAB usando eso como su clave y obtener el nombre completo de esa manera?

Si usted tiene la dirección de Internet sólo se puede utilizar la clase 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top