Cómo obtener el nombre completo del propietario del archivo de correo de Lotus Notes
-
20-09-2019 - |
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
?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 -. Lamailserver
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