使用odbc和NotesSQL从.net应用程序导出Lotus Notes附件
本文关键字:Lotus Notes 附件 应用程序 net odbc NotesSQL 使用 | 更新日期: 2023-09-27 18:16:45
我尝试使用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来完成这个任务。这可能吗?
不,我不相信你可以通过NotesSQL获得附件。
然而,Domino COM类可以在64位操作系统上使用,但是它们必须从32位代码中调用,因此您必须在Visual Studio项目中正确设置选项以构建32位应用程序。你是正确的,这些类在64位上是不被支持的。这是我多年来一直向IBM抱怨的事情,但是我可以告诉你,人们确实在使用它们,而且它们大多数都有效。只有几个已知的问题——特别是返回设计元素列表(例如表单、视图等)的方法已知存在问题。此外,根据机器上安装的内容和顺序,您可能会发现在使用这些类之前必须手动注册nlsxbe.dll。当然,如果你发现任何其他问题,你得自己解决。IBM不会帮你的。当然,社区——这里是StackOverflow、IBM的DeveloperWorks Notes和Domino论坛、OpenNTF以及其他各种地方——将尽最大努力提供帮助。但是缺少官方支持是你需要考虑的问题。
您可以考虑的另一种选择是Domino Data Service,它是Domino的REST API,但是您的Domino服务器需要是最新版本才能使用它。看到这里。
为什么不创建一个Lotusscript代理来将所有附件导出到驱动器中的一个文件夹中,然后将该文件夹复制/移动到您想要的另一台机器上呢?有兴趣知道不这样做的原因。
或
你可以创建一个简单的视图与附件url的列和使用"view?readviewentries"来加载。net应用程序中的附件url列表并下载附件。
你可以在url中使用Count和Start参数来读取下一个附件列表
为这工作,http任务需要运行和数据库ACL匿名需要是最小的读者访问。