首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用加密笔记

用加密笔记
EN

Stack Overflow用户
提问于 2012-10-26 08:16:01
回答 1查看 666关注 0票数 0

我为Lotus编写了一个简单的邮件客户端,并试图加密一条消息。根据C++ API帮助,我的方法如下:

代码语言:javascript
运行
复制
LNMailMessage msg;
session.CreateMailMessage(&msg);     // Create new message
msg.Open();                          // Open message for editing

msg.SetRecipients(<myself>);         // Set recipients
msg.SetSubject("Encryption test");   // Set subject

if (msg.HasItem("Body"))             // Delete default body
    msg.DeleteItem("Body");

LNText body;                         // Create encrypted body field
body.SetValue("Encrypted text");
msg.CreateItem("Body", body, LNITEMFLAGS_ENCRYPT);

msg.Encrypt();                       // Encrypt message
msg.Send();                          // Send message

现在,我遇到了一个问题: Encrypt()方法抛出一个异常,由于一个未打开的数据库,消息无法加密:

由于未打开的数据库,无法执行操作

当我尝试对一条消息签名时,也会出现相同的错误消息。有人知道我做错了什么吗?指的是哪个数据库?欢迎您提出任何建议,也可以使用C API。也许这能给你个提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-27 03:44:26

最新答案

鉴于在评论中交换的信息..。

您可以尝试将名为"Encrypt“的文本项设置为"1”,而不是使用msg.encrypt()。这是指示Send()方法在发送电子邮件时加密电子邮件的另一种机制。LotusScript/COM/Java中的EncryptOnSend属性实际上只是设置此项的快捷方式。我相信加密仍然发生在客户端,但值得尝试一下,作为一个解决办法。

也就是说,LNMailMessage继承自LNDocument,因此与EncryptOnSend等价的是将msg转换为LNDocument类,然后使用LNDocument::CreateItem创建一个值为"1“的文本项"Encrypt”。

原始答案

我假设您是在一台机器上运行代码,该机器安装了Notes客户端,并配置了ID文件,您希望该文件用于发送方和签名。(仅仅完成安装是不够的,即使这为您提供了所需的所有DLL。您还需要查看客户端的设置。)

我将检查客户端当前位置文档中的邮件文件位置、邮件文件、家庭服务器和(可选)目录服务器设置,并确保它们都已适当设置。

我还将检查您是否可以打开客户端上的邮件文件,并手动发送签名和加密的消息。

如果您的代码正在服务器上运行,则在server文档中的“Basics”选项卡底部有一个“服务器位置信息”部分,您应该检查该部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13083227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档