كيفية الحصول على الاسم الكامل لمالك ملف البريد في ملاحظات لوتس

StackOverflow https://stackoverflow.com/questions/2074096

سؤال

شريطة أن يكون لدي اسم ملف البريد والخادم ، كيف يمكنني استرداد الاسم المؤهل بالكامل للمستخدم الذي يتوافق معه في النموذج "CN = XXX/O = YYY" باستخدام Lotusscript؟

للبدء ، لدي اسم مستخدم للمستخدم - الجزء قبل @ في البريد الإلكتروني: ie user1@example.com

أعرف أيضًا الخادم ، الذي يتم تسجيل هذا المستخدم ، لذلك أستخدم التسجيل. getuserInfo مثل هذا:

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

والسؤال هو: كيف يمكنني الحصول على الاسم الكامل للمستخدم من هذه البيانات؟

هل كانت مفيدة؟

المحلول 4

انتهى بي الأمر بهذا الحل (كما أعرف ما هو خادم دفتر العناوين للمستخدم):

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

Dim namelist As Variant

namelist = Evaluate ( macro$ )

commonName = namelist(0)

نصائح أخرى

إليك تنفيذ سريع لاقتراح 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

بضع كلمات من الحذر:

  • CANONICALIZE يختار قيمه من المعرف الحالي ، وليس دليل الدومينو - الإدخال mailserver يجب أن تكون في شكل مختصر أو قانوني لهذا العمل.
  • ال MailFile ميدان يمكن اه ويمكن لا تشمل .nsf تمديد.
  • لا أعتقد أن اسم الملف حساس للحالة على Windows ، ولكنه قد يكون على منصات أخرى.

إذا كنت بحاجة إلى إجراء عمليات البحث هذه بشكل متكرر ، فمن المحتمل أن يكون جدول البحث المحسوب أو العرض في دليل Domino هو الحل الأكثر كفاءة.

إذا كان لديك اسم ملف البريد ، فلماذا لا تقوم بإجراء بحث في NAB باستخدام ذلك كمفتاحك واحصل على الاسم الكامل بهذه الطريقة؟

إذا كان لديك عنوان الإنترنت ، يمكنك فقط استخدام فئة 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top