近期公司调整了邮件架构出现了一些问题,这些问题其实是我们日常接触到的,只是想到了没有更好的去做而已,作为一个管理员应该会的东西,那是什么呢,具体是这样的,由于Domino目录下人员多,或者邮件组比较多的话,如果通过搜索的方式比较麻烦,非常慢没有效率,这样我们就通过手动的方式将编辑好的格式文件粘贴,这样容易出问题,如果名称写错,给相应的邮件组发送邮件会提示错误,说用户不在Domino列表中,那有什么好的方法来检测 邮件组的成员是否在Domino目录下呢,有,那就是通过代理来实现。
我本身在Domino运维上是一个菜鸟,在Domino开发上更是一个菜菜鸟了,近期看了很多资料跟看天书一样不懂,近期通过Lotus论坛、Lotus QQ群交到了一些朋友,通过互相了解互相信任及互相学习进步,了解了一点知识来实验测试该问题,具体见下“
我环境内有两台Domino server
Server1:Dsgrd-mail01
Server2:Dsgrd-mail02
Globle Name:Dsgrd.com
Domino列表下分别注册了一些用户,分别为注册在两个服务器上面,
User1、users2、user3注册在Dsgrd-mail01上
User11、user12、user13注册在Dsgrd-mail02上
然后创建相应邮件组(群组)
我们在Test1添加用户;如果通过搜索的方式添加用户的话,其实是按照策略中设置按照用户的Listname进行搜索的,这个条件可以根据策略来更改;
我们通过搜索将user1、user11添加到邮件组,同时手动将user21、user31添加到该邮件组,(user21、user31Domino不在Domino目录列表中)
同理user2、user12添加到Test2邮件组内,同时手动添加user41、user51(user41、user51Domino不在Domino目录列表中)
同理user3、user13添加到Test3邮件组内,同时手动添加user61、user71(user61、user71Domino不在Domino目录列表中)
下面我们就是开始新建代理
我们都知道Domino是可以开发的,是通过通过Lotus designer组件
我们打开Lotus Designer
我们可以打开先用的应用程序,具体不细说了,
因为要新建一个代理,我们也可以在Names,nsf数据库上新建代理,但是为了保险起见,我们新建一个空白的数据库,然后再上面新建代理。
确认后自动打开该数据库的,
我们需要创建一个表单
名称任意写,
然后新建一个代理
代理名称最好跟本地的文件名称同名ag_get_person,当然也可以任意
我们打开代码
Sub Initialize
On Error Goto errhandle
Dim session As NotesSession
Set session = New NotesSession
Dim doc As NotesDocument
Set doc = session.DocumentContext
Dim db As NotesDatabase
Set db = session.CurrentDatabase
'打开人员数据库
Dim namedb As NotesDatabase
Set namedb = session.GetDatabase(db.Server,"names.nsf")
If Not namedb.IsOpen Then
Msgbox "找不到人员数据库"
Exit Sub
End If
'打开所有人员视图
Dim nameview As NotesView
Set nameview = namedb.GetView("_People")
If nameview Is Nothing Then
Msgbox "找不到所有人员搜索视图,请与管理员联系!"
Exit Sub
End If
'打开邮件用户群组视图
Dim emailview As NotesView
Set emailview= namedb.GetView("Groups1")
If emailview Is Nothing Then
Msgbox "找不到邮件用户群组视图,请与管理员联系!"
Exit Sub
End If
'得到邮件视图中所有群组条目
Dim vc As NotesViewEntryCollection
Set vc = emailview.AllEntries
Msgbox "邮件群组个数是:" & vc.count
If vc.count>0 Then
Dim i As Long
'循环所有试图条目
For i = 1 To vc.Count
'获取第i条视图的条目
Dim entry As NotesViewEntry
Set entry = vc.GetNthEntry(i)
'获取此条目的文档
Dim tempdoc As NotesDocument
Set tempdoc = entry.Document
Dim key As String
'Msgbox tempdoc.ListName(0)
Dim item As NotesItem
Dim l As Integer
Dim j As Integer
l=0
Set item = tempdoc.getfirstitem("Members")
If item.text<>"" Then
j = Ubound(item.Values)
For l = 0 To j-1
key=item.Values(l)
Dim key1 As Variant
key1=Split(key,"/")
Dim key2 As Variant
key2=Split(key1(0),"=")
'Msgbox key2(1)
Dim namedoc As NotesDocument
Set namedoc = nameview.GetDocumentByKey(key2(1),True)
If namedoc Is Nothing Then
Msgbox tempdoc.ListName(0) &"组下的"& key2(1) &"不在domino列表里!"
End If
Next
End If
Next
End If
Exit Sub
errhandle:
Msgbox Erl & Error
Exit Sub
End Sub
我们新建代理
然后单击保存即可;我们现在开始测试代理:
我们打开表单:两种方法,第一,通过预览客户端,第二通过web打开
我们首先是通过client打开;
这样需要我们每次的确认来查看有问题的用户,非常的麻烦,我们通过第二种方法来操作
用户我们需要单独授权,在服务器文档可以单独授权
登陆进去我们发现什么也没有看见,如果单击测试我们就能通过Lotus console能看见状态,我们在单击前,先看看Lotus console状态
我们接下来单击测试
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1179050,如需转载请自行联系原作者