Como obter o nome completo do proprietário do arquivo de e -mail em notas de lótus
-
20-09-2019 - |
Pergunta
Desde que eu tenha o nome do arquivo de e -mail e o servidor, como recuperar o nome totalmente qualificado do usuário que ele corresponde no formulário "CN = xxx/o = aa" usando o Lotusscript?
Para começar, eu tenho o nome de usuário do usuário - a peça antes @ no e -mail: ie user1@example.com
Eu também conheço o servidor, no qual esse usuário está registrado, então eu uso o registro.getUserinfo como este:
Dim reg as New NotesRegistration
reg.RegistrationServer = "CN=myserver/O=mydomain"
Call reg.GetUserInfo("user1", mailserver$, mailfile$)
A pergunta é: quão desses dados posso obter o nome completo do usuário?
Solução 4
Acabei com esta solução (como sei qual é o servidor do livro de endereços para o usuário):
macro$ = { @DbLookup( "" ; "} & regServer & _
{" : "names.nsf" ; "($Users)" ; "} & shortName & {" ; "FullName" ) }
Dim namelist As Variant
namelist = Evaluate ( macro$ )
commonName = namelist(0)
Outras dicas
Aqui está uma rápida implementação da sugestão de 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
Algumas palavras de cautela:
CANONICALIZE
escolhe seus valores do ID atual, não o diretório dominó - a entradamailserver
Deve estar em forma abreviada ou canônica para que isso funcione.- o
MailFile
campo posso ou não posso inclua o.nsf
extensão. - Eu não acho que o nome do arquivo seja sensível ao minúsculo no Windows, mas pode estar em outras plataformas.
Se você precisar fazer essas pesquisas com frequência, uma tabela de pesquisa computada ou uma visualização no diretório dominó é provavelmente a solução mais eficiente.
Se você tem o nome do arquivo de correio, por que não fazer uma pesquisa no NAB usando -a como sua chave e obtenha o nome completo dessa maneira?
Se você tiver o endereço da Internet, basta usar a 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