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

使用HCL C API将Domino v14新建邮件移至指定文件夹失败求助

HCL Domino C API 邮件创建后移动到指定文件夹的问题解决

你的现有代码执行成功但未生效,可能是参数配置或API使用方式的问题,以下是几种可行的解决方法:

一、直接使用NSFNoteAddToFolderAPI

这是Domino C API中专门用于将文档添加到文件夹的接口,逻辑更直观:

STATUS status;
NOTEID folderNoteID;
NOTEID sentFolderNoteID;

// 获取目标文件夹的NOTEID
status = NIFFindView(dbHandle, folderName, &folderNoteID);
if (status != NOERROR) {
    return status;
}

// 将邮件添加到目标文件夹
status = NSFNoteAddToFolder(dbHandle, docNoteId, folderNoteID, 0);
if (status != NOERROR) {
    return status;
}

// 可选:从“已发送”文件夹移除邮件(实现“移动”而非“复制”)
status = NIFFindView(dbHandle, "$Sent", &sentFolderNoteID);
if (status == NOERROR) {
    NSFNoteRemoveFromFolder(dbHandle, docNoteId, sentFolderNoteID, 0);
}

二、创建邮件时直接指定目标文件夹

在保存邮件前,通过设置$FolderRefs字段,让邮件保存后直接出现在目标文件夹,无需后续移动操作:

// 在调用NSFNoteUpdate之前添加以下代码
NOTEID folderNoteID;
STATUS error;

// 先获取目标文件夹的NOTEID
error = NIFFindView(dbHandle, folderName, &folderNoteID);
if (error != NOERROR) {
    goto Done;
}

// 设置$FolderRefs字段,指定邮件归属的文件夹
WORD folderIDs[] = {folderNoteID};
error = NSFItemSetWord(hNote, "$FolderRefs", folderIDs, sizeof(folderIDs)/sizeof(WORD), 0);
if (error != NOERROR) {
    goto Done;
}

// 保存邮件
error = NSFNoteUpdate(hNote, 0);
if (error != NOERROR) {
    goto Done;
}

三、修正原有FolderDocAdd调用逻辑

原代码中可调整FolderDocAdd的参数标记,确保文件夹归属被正确更新:

// Save to folder
STATUS status;
NOTEID fNoteID;
HANDLE hIDTable;

status = NIFFindView(dbHandle, folderName, &fNoteID);
if (status != NOERROR)
{
    return status;
}

status = IDCreateTable(sizeof(NOTEID), &hIDTable);
if (status != NOERROR)
{
    return status;
}

status = IDInsert(hIDTable, docNoteId, NULL);
if (status != NOERROR)
{
    IDDestroyTable(hIDTable);
    return status;
}

// 使用FOLDER_DOC_ADD_REPLACE标记,替换文档的现有文件夹归属
status = FolderDocAdd(dbHandle, NULLHANDLE, fNoteID, hIDTable, FOLDER_DOC_ADD_REPLACE);
if (status != NOERROR)
{
    IDDestroyTable(hIDTable);
    return status;
}

IDDestroyTable(hIDTable);

注意事项

  • 确认目标文件夹是Domino中的文件夹视图(而非普通视图),NIFFindView需传入准确的视图名称(区分大小写,系统文件夹如“已发送”对应内部名称$Sent)
  • 确保操作账号拥有数据库的文档编辑权限及文件夹修改权限
  • 操作完成后可调用NSFDbFlush(dbHandle)确保变更写入磁盘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:45:55