Domino8.5下邮件组成员身份验证(二)

简介:

之前写过一篇文章,主要介绍了如何验证邮件组内的成员是否存在DOmino列表中的;因为我们都知道Domino是一个开源的软件,邮件组内的成员可以手动去添加,如果添加了未知用户的话在给邮件组发送邮件会有退信提示,说某个用户不在domino列表中,上篇文章中几乎可以满足,但是缺点是邮件组嵌套的邮件组无法查询,以下为网友更改后的代码:

Sub Initialize 
    On Error Goto errH 
    
    
    
    Dim session As NotesSession 
    Dim nab As NotesDatabase , view As NotesView , group As NotesDocument 
    Dim dc As NotesDocumentCollection 
    Dim tmp As NotesDocument , item As NotesItem 
    
    Set session = New NotesSession 
    
    
    '打开Notes Domino Directory 
    Msgbox |1. Open Domino Directory (|+session.Currentdatabase.Server+|!!|+ NAB_DB_PATH$ +|) ... | 
    Set nab = session.Getdatabase( session.Currentdatabase.Server , NAB_DB_PATH$  ) 
    If Not nab.Isopen Then 
        Msgbox |*** Cannot open Domino Directory :( , Quit. | 
        Exit Sub 
    End If 
    Msgbox |1. Domino Directory opened.| 
    
    
    'open view 
    Msgbox |2. Process all groups ...| 
    Set view = nab.Getview( GROUP_VIEW_NAME$ ) 
    If view Is Nothing Then 
        Msgbox |*** Cannot open Group View (|+ GROUP_VIEW_NAME$ +|) :( , Quit. | 
        Exit Sub 
    End If 
    
    '临时存储 
    Set tmp = session.Currentdatabase.Createdocument() 
    'processing docs in view 
    Set group = view.Getfirstdocument() 
    While Not group Is Nothing 
        '说明: 
        '  判断组成员是否存在于NAB中 
        '  判断方法 - 在NAB中检索组成员是否存在 
        ' 
        Msgbox |[!] Processing GROUP:|+group.ListName(0) 
        tmp.tmpMembers = "" 
        Set item = tmp.Replaceitemvalue("tmpMembers", "") 
        Forall v In group.Members 
            If Len(Trim$(v))>0 Then 'v不是空字符串 
                '检索这个组中的成员中的组、个人和服务器是否存在 
                Set dc = nab.Search({ 
(Type="Group"&GroupType!="3"&Form="Group"&@UpperCase(ListName)="}+Ucase$(v)+{") 

(Type="Person"&@IsMember(@Name([Abbreviate];"}+ Ucase$(v) +{");@Name([Abbreviate];@UpperCase(FullName)))) 

(Type="Person"&@UpperCase(InternetAddress)="}+ Ucase$(v) +{") 
|  
(Type="Server":"X400Server":"POServer"&Form="Server":"X400Server":"cc:Mail Post Office Server"&@Name([Abbreviate];@UpperCase(ServerName))=@Name([Abbreviate];"}+Ucase$(v)+{") ) 
} , Nothing , 1) '检索一个FullName 
                If dc.Count>0 Then 
                    Msgbox |+++ |+ v +| in GROUP:|+group.ListName(0)+| found in NAB.| 
                    Call item.Appendtotextlist(v) 
                Else 
                    Msgbox |--- |+ v +| in GROUP:|+group.ListName(0)+| NOT found in NAB.| 
                End If 
            End If 
        End Forall 
        group.Members = Evaluate(| @Sort(@Trim(@Unique(tmpMembers))) |,tmp) 
        Call group.save(True,True) 
        
        Set group = view.Getnextdocument(group) 
    Wend 
    Msgbox |2. Process all groups ... done.| 
    
    
    
    Exit Sub 
errH: 
    Msgbox "AA-001 error: "+Error$+"@"+Cstr(Erl()) 
    Exit Sub 
End Sub



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1186332,如需转载请自行联系原作者

相关文章
|
5月前
|
JSON 安全 Java
什么是用于REST API的JWT Bearer令牌以及如何通过代码和工具进行调试
在Web开发中,保护REST API至关重要,而JSON Web令牌(JWT)特别是JWT Bearer令牌,是一种高效方法。它通过紧凑、自包含的结构实现安全信息交换,提升用户体验。本文探讨JWT Bearer的基本概念、结构与实现,包括在Java中的应用步骤,以及使用Apipost和cURL进行测试的方法。JWT优势明显:无状态、互操作性强,适用于分布式系统。掌握JWT Bearer,可助开发者构建更安全、高效的API解决方案。
|
10月前
|
云安全 安全 数据安全/隐私保护
带你读《阿里云安全白皮书》(二十五)——总结与展望
数智化技术的发展重塑了社会生产模式,提高了生产效率和资源配置精度。阿里云致力于构建安全、高效的云生态系统,通过深化安全机制研究和建设,保障云服务的稳定运行和客户业务安全,推动数字经济的可持续发展。
|
11月前
|
缓存 安全 前端开发
Electron on macOS: 揭秘 MacUpdater 如何实现无缝自动更新?
本文首发于微信公众号“前端徐徐”,详细探讨了 Electron 应用在 macOS 平台上的更新原理。文章分析了 `MacUpdater` 类的实现,包括与 Electron 原生更新器的集成、更新检测和下载、代理服务器管理、环境适配、安全性保障、错误处理和日志记录、更新安装流程控制以及缓存管理等关键功能。通过这些技术细节,展示了如何在 macOS 上实现高效、安全的 Electron 应用更新。
392 0
Electron on macOS: 揭秘 MacUpdater 如何实现无缝自动更新?
在Linux中,有一堆日志文件,如何删除7天前的日志文件?
在Linux中,有一堆日志文件,如何删除7天前的日志文件?
|
SQL JSON 缓存
玳数科技集成 Flink CDC 3.0 的实践
本文投稿自玳数科技工程师杨槐老师,介绍了 Flink CDC 3.0 与 ChunJun 框架在玳数科技的集成实践。
855 7
玳数科技集成 Flink CDC 3.0 的实践
|
传感器 数据可视化 定位技术
压路机土方压实摊铺精确施工引导系统
压路机土方压实摊铺精确施工引导系统
168 1
|
监控 Linux Shell
探索Linux命令nice:优雅地调整进程优先级
`nice`命令在Linux中用于调整进程优先级,影响资源分配。它允许设置-20到19的nice值,数值越低,优先级越高。在数据处理时,使用`nice`可控制任务优先级,避免占用全部CPU资源。例如,`nice -n 10 command`以低优先级启动`command`。注意不要过度使用,应根据系统负载和需求谨慎调整。使用`renice`可改变已运行进程的优先级,生产环境操作需谨慎。
|
12月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
394 0
|
SQL 关系型数据库 MySQL
orchestrator搭建mysql高可用
orchestrator搭建mysql高可用
240 0
|
Java Apache
远程调用工具HttpClient工具类封装
java远程调用工具HttpClient工具类类封装