You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于CSV批量移动Domino用户邮件库的Lotus Script不生效问题咨询

Lotus Script批量移动Domino邮件文件不生效问题排查及修复

代码层面错误

  1. 字符串参数未加引号:Call nap.MoveMailUser(Username, MyServer/myserverdomain , moved) 中的服务器名和目录路径都是字面量字符串,没有加双引号,Lotus Script会将其识别为未声明的空变量,再加上你开启了On Error Resume Next,所有错误都会被静默吞掉,所以控制台看不到报错也不会执行成功。
  2. Print语句语法错误:Print "Moved" & CStr(movecounter) "Users" 缺少字符串连接符&,正确写法是Print "Moved" & CStr(movecounter) & "Users",该错误同样会被错误捕获语句吞掉。
  3. 未正确处理AdminP请求:MoveMailUser返回的是AdminP请求的Note ID,该请求不会立刻执行,需要Domino的Administration Process进程定期处理请求队列,你直接调用后没有验证请求是否成功提交,也无法判断请求是否有效。

配置层面遗漏

  • 运行脚本的ID权限不足:需要在目标服务器的「服务器文档」->「安全」页签中,将运行脚本的ID加入「管理员」、「可以修改用户文档」、「可以移动用户邮件文件」的权限列表中。
  • 目标目录权限问题:你预先创建的moved目录需要给Domino服务器运行身份授予读写、修改文件的权限,同时路径参数建议补全末尾斜杠,比如写为"moved/",确保Domino识别为目录而非文件名前缀。
  • 用户名格式问题:CSV中读取的用户名必须是Domino目录中的标准规范名(格式为CN=用户名/O=组织名),如果是简写名可能匹配不到用户文档,导致请求无效。
  • AdminP进程未启用:需要在Domino控制台执行tell adminp process all手动触发一次AdminP处理,或者确认AdminP进程正常运行,移动邮件的请求属于AdminP的延迟执行任务,不会触发后立刻生效。

修复后代码

Sub Initialize
    Dim session As New NotesSession
    Dim addbk As NotesDatabase
    Dim Username As String
    Dim movecounter As Integer
    Dim nap As NotesAdministrationProcess
    Dim FileNumber As Integer
    Dim Filename As String
    Dim noteID As String
    
    ' 初始化AdminP,替换为你的管理服务器名
    Set nap = session.CreateAdministrationProcess("MyServer/myserverdomain")
    ' 打开 Domino 目录
    Set addbk=session.GetDatabase("MyServer/myserverdomain","names.nsf",False)
    If addbk Is Nothing Then
        Print "无法打开names.nsf,请检查服务器连接"
        Exit Sub
    End If
    
    FileNumber%=FreeFile()
    Filename$="D:\moveMail.csv"
    Open Filename For Input As FileNumber%
    
    ' 测试阶段建议先注释掉On Error Resume Next,方便排查错误
    ' On Error Resume Next
    
    movecounter=0
    Do Until EOF(FileNumber%)
        Input #FileNumber%,Username
        ' 去除用户名前后空格
        Username = Trim(Username)
        If Username <> "" Then
            movecounter=movecounter+1
            ' 字符串参数加双引号,路径补全末尾斜杠
            noteID = nap.MoveMailUser(Username, "MyServer/myserverdomain" , "moved/")
            If noteID <> "" Then
                Print "已提交第" & CStr(movecounter) & "个用户" & Username & "的移动请求,请求ID:" & noteID
            Else
                Print "提交用户" & Username & "的移动请求失败"
            End If
        End If
    Loop
    Close FileNumber%
    Print "全部请求提交完成,共提交" & CStr(movecounter) & "个请求,请等待AdminP处理"
End Sub

内容的提问来源于stack exchange,提问作者S1ngler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:06:03