使用odbc和NotesSQL从.net应用程序导出Lotus Notes附件

时间:2015-10-08 19:04:04

标签: c# .net odbc lotus-notes lotus-domino

我尝试使用interop.domino.dll导出附件,但似乎这个dll不支持64位操作系统:https://www-304.ibm.com/support/docview.wss?uid=swg21454291这是代码:

    public void GetAttachments()
    {
        NotesSession session = new NotesSession();
        session.InitializeUsingNotesUserName("user", "password");

        NotesDbDirectory DbDirectory = session.GetDbDirectory("server");
        NotesDatabase NotesDB = DbDirectory.OpenMailDatabase();
        NotesDocumentCollection documents = NotesDB.UnprocessedDocuments;
        NotesDocument currentDocument = documents.GetFirstDocument();

        do
        {
            if (currentDocument.HasEmbedded  && currentDocument.IsValid && !currentDocument.IsDeleted)
            {
                List<NotesEmbeddedObject> items = currentDocument.EmbeddedObjects;

                items.ForEach(item => item.ExtractFile("C:\\attachments\\"));
            }

            currentDocument = documents.GetNextDocument(currentDocument);
        } while (currentDocument != null);
    }

所以现在我正在尝试通过NotesSQL完成这项任务。这有可能吗?

2 个答案:

答案 0 :(得分:1)

不,我不相信你可以通过NotesSQL获取附件。

然而,可以在64位操作系统上使用 Domino COM类,但必须从32位代码调用它们,因此您必须在Visual Studio项目中正确设置选项构建一个32位应用程序。

你是正确的,64位正式不支持这些类。这是我多年来一直向IBM抱怨的事情,但我可以告诉你,人们确实使用它们,而且他们大部分时间都在工作。只有一些已知的问题 - 特别是返回设计元素列表的方法(例如表格,视图等)已知存在问题。此外,根据计算机上安装的内容和顺序,您可能会发现必须先手动注册nlsxbe.dll才能使用这些类。当然,如果您发现任何其他问题,您可以自己动手。 IBM不会帮助你。好吧,社区 - 在StackOverflow上,在IBM的Notes和Domino的DeveloperWorks论坛上,在OpenNTF上,以及其他各个地方,当然也会尽力提供帮助。但缺乏官方支持是你需要考虑的事情。

您可以考虑的另一种方法是Domino数据服务,它是Domino的REST API,但是您的Domino服务器需要是一个相当新的版本才能使用它。请参阅here

答案 1 :(得分:0)

为什么不创建一个Lotusscript代理来将所有附件导出到驱动器中的文件夹,只需将该文件夹复制/移动到您想要的其他计算机上?有兴趣知道不这样做的原因。

或者

您可以在列中创建一个带有attachmet url的简单视图,并使用“view?readviewentries”加载.NET应用程序中的附件URL列表并下载附件。

您可以在网址中使用Count和Start参数来阅读下一个附件列表。

要使其正常工作,需要运行http任务,并且Anonymous的数据库ACL需要是最小的读者访问权限。